netstat -n | awk'/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
CLOSED:无连接是活动的或正在进行
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
ITMED_WAIT:等待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等待所有分组死掉
netstat -an | grep-i "127.0.0.1:80" | awk '{print $6}' | sort | uniq -c | sort -n
统计TCP各个连接状态的数量
netstat -na | grep-c ":80"
显示并发进程
ls -l
按文件大小排序
/Data/apps/httpd/bin/apachectlstop
/Data/apps/httpd/bin/apachectlstart
重启和停止apache
/Data/apps/apache/bin/httpd-k restart
重启apache
netstat -an|grep'192.168.0.1:80'
收邮件
修改邮件路径可以在/etc/profile里修改
history
查看历史的运行指令
查看访问80端口的连接
ls -al
列出当前所有档案(包含隐藏档)及所有的档案属性
alias lm='ls -al'
type ls
查看ls是内建指令还是非内建指令
curl -I 127.0.0.1
telnet 127.0.0.111211
telnet 127.0.0.1 25
SHOW VARIABLES LIKE'have_query_cache';
通过have_query_cache服务器系统变量指示查询缓存是否可用:
SHOW VARIABLES LIKE'query_cache_size';
取得查询缓存大小
SET GLOBALquery_cache_size = 40000;
FLUSH QUERY CACHE
可以使用FLUSH QUERY CACHE语句来清理查询缓存碎片以提高内存使用性能。该语句不从缓存中移出任何查询。
RESET QUERY CACHE
从查询缓存中移出所有查询
/Data/apps/apache/bin/apachectl -t
/Data/apps/apache/bin/apachectl -kgraceful
Error: Table 'xxx'is marked as crashed and should be repaired
REPAIR TABLE `xxx`;
[root@pilot bin]#/Data/apps/mysql/bin/perror 29
OS errorcode 29: Illegal seek
查询错误代码描述信息
SELECT name, dbFROM mysql.proc LIMIT 0 , 30;
查询存储过程列表
lsof | grep mysql
从哪里看描述符
lsof | greperror_log
rsync -az--delete --progress /home/www/test /home/www/test2
本地同步
/usr/bin/rsync-vzrtopg --progress -e [email protected]:/etc/hosts /etc/
mysqldump-h127.0.0.1 -uusername -ppass dbname > db.sql
导出数据库
连接sftp
get/var/www/index.php index.php
下载远程主机文件到本地
put index.php/home/www/index.php
上传本地文件到远程主机
lpwd
查看本机目录
if [ -s/tmp/php-error.log ]
then
DATE=`date +%y%m%d`
cp/tmp/php-error.log /logs/php_error_log/php-error$DATE.log
cat /dev/null >/tmp/php-error.log
gzip -9/logs/php_error_log/*.log
else
echo ok
fi
=============================================================
dir=`cd/Data/cache;ls | grep "\.old"`
for dirname in $dir
do
cd /Data/cache;find ./$dirname/ -name '*' -exec rm -rdf {} \;>/dev/null 2>&1 &
done
dir = `cd /Data/webapps/360quan.com;ls"
for dirname in $dir
do
echo dirname
done
echomd5(uniqid(microtime()));
生成唯一标识
explorer[url=http://www.sohu.com/]http://www.sohu.com[/url]
mysqladmin-h127.0.0.1 -uroot create 1111
mysqladmin-h127.0.0.1 -uroot status;
mysqladmin-h127.0.0.1 -uroot drop 1111
mysqladmin-h127.0.0.1 -uroot processlist;
mysqladmin-h127.0.0.1 -uroot ping
mysqladmin-h127.0.0.1 -uroot version
mysqladmin-h127.0.0.1 -uroot shutdown
关闭mysql服务器
svn log url
svn info
svn ls
explorer e:
打开E盘
ls | vim -
Vim 能从标准输入读取文本
zfap zo
设置折叠与打开折叠
:colo default
语法高亮设置
CTRL-Z
在vim中把vim先挂起。fg命令
:!ls 从vim内执行单个shell命令
service mysqlrestart
/etc/init.d/mysql start|stop|restart|reload|force-reloads
ps -A | grep mysql
查看运行的mysql进程
kill后重启mysql
Can't open file:'group_lists.MYI' (errno: 145)\n的解决方案
repair tablegroup_lists
SELECT benchmark(100000000, 'select * from group_lists' )
检测Mysql的性能
SELECT * FROMgroup_lists PROCEDURE ANALYSE ( )
分析各个子段类型大小是否设置合适
ps -ef|grephttpd|wc -l
[url=http://127.0.0.1/server-status]http://127.0.0.1/server-status[/url]
apache信息查看
php_flag engine off对于不需要php权限的目录或者虚拟主机设置加上这个
ls -al 查看所有文件包括隐藏文件
htpasswd -c/tmp/.htpasswd admin
建立一口令文件,文件名为.htpasswd,用户名为admin
.htaccess文件
AuthName admin-only
AuthType Basic
AuthUserFile/tmp/.htpasswd
require user admin
scp/home/scw/[email protected]:/home/sunchangwei
SCP的新命令,这个命令可以在主机间进行大数据量的交互。而且在局域网中传数据,可以达到10MB/S.详细的命令格式,可以用man scp进行查询
gzip
压缩命令
mysql -uroot -ptablename < tablename.sql
导入数据
update mysql.db setdb ='group2' where user = 'group';
ll -t
按时间排序
ll -S
按大小排序
awk '{print"space"}' /etc/passwd
awk '{print}'/etc/passwd
awk -F":"'{print $1}' /etc/passwd
awk -F":"'{print "username" $1 "\t\tuid" $3}' /etc/passwd
awk /var/'{print}'/etc/passwd > var.txt
会对/etc/passwd中的每一行执行正则表达式/var/筛选出来保存到var.txt
awk '{print $1}'/etc/passwd | tee passwd.txt
输出到文件的同时也在屏幕上显示
awk 'BEGIN {print"Name Belt\n-----------------------------------"}{print$1"\t",$4}' grade.txt
awk '$4 ~ /Brown/'grade.txt
打印信息头
Name Belt
-----------------------------------
M.Tans Green
J.Lulu green
P.Bunny Yellow
J.Troll Brown-3
L.Tansl Brown-2
awk 'BEGIN {print"Name\n--------"}{print $1} END {print "end-of-report"}'grade.txt
打印信息尾
awk 'BEGIN {print"Name\n--------"}{print $1} END {"end-of-report"}'
awk '{if($4 ~/Brown/) print $1}' grade.txt
使用操作符和正则例子
awk'gsub(/48317/,6666){print $0}' grade.txt
把记录中匹配/48317/的替换为6666
sed -n '2p'quote.txt 只打印第二行
sed -n '1,3p'quote.txt
打印第1到3行
sed -n '1,$p'quote.txt 显示一个文件的所有行
sed -n '1p'quote.txt 打印第一行
sed -n '$p'quote.txt 打印最后一行
find /Data/logs -type f -mtime +5 -exec rm{} \;
在logs目录中查找是文件并在5天以前被更改
find -type f -print | xargs file
find -name "*.php"
在当前目录下查找所有扩展名php的文件
find /Data/ -type d
查找目录下的所有目录
grep -i -c"usp" data.f
在data.f文件中查找usp,不区分大小写,只返回匹配的行数
grep -r'GroupProfileDAO::exist' ./
grep -r'GroupProfileDAO::exist' *.php 只查找php文件
grep-n -r 'GroupProfileDAO::exist' *.php
加上行号
mysqladmin -urootping &>dev/null
mysqladmin-h127.0.0.1 -uroot -proot processlist
mysqladmin-h127.0.0.1 -uroot -proot version
mysqldumpslow -s c-t 5 24.slow.comment.20080822 > 24.slow.comment.20080822.log -g | grep -vlocal
mysqldumpslow -sc 10.slow.log.20080825 | grep -i notice_message | wc -l
mysqldumpslow -sc -t 20 myqlslow.log
找出查询次数最多的前20条sql
mysqldumpslow -s t-t 20 mysqlslow.log
找出查询时间最多的前20条sql
echo "That isall right, this is a great job." > test.txt
head -n 1/etc/issue
查看操作系统版本
df -h 查看各分区的使用情况
last | grep"heiyeluren" | wc -l
查看用户登陆日志
ls *[0-9]*
显示包含数字的文件名和目录名
mkdir -p/tmp/dir1/dir2
创建一个目录树
rm -f file1
删除一个叫做 'file1' 的文件'
rmdir dir1
删除一个叫做 'dir1' 的目录'
find /dir1/dir2/-name \*.php
在此目录中查找以php结尾的文件
du -sh dirname
估算dirname所占用的磁盘空间
df -h | grep 50%
cat /etc/group
查看所有用户组
groupadd group_name添加一个用户组
groupdel group_name删除一个用户组
groupmod -nnewGroupname oldGroupname 重命名一个用户组
bzip2 file1
压缩一个叫file1的文件
bunzip2 file1 解压缩文件
gzip file1
gunzip file1
more/var/log/messages
查看大文件内容
grep Aug -R/var/log/*
type command
查看command指令是内建指令还是外建
read -p"Please keyin your name: " -t 30 named
读取来自键盘输入的变量,并加上提示,超过30秒没动作自动停止
a[0]="apple"
a[1]="orange"
a[2]="banana"
for b in ${a};do
echo $b
done
shell数组循环例子
echo"empty" >> test1.$$
basename dir 从路径中分离出文件名
cat f1 f2 >> f3
把f1和f2的内容合并到f3
diff f1 f2
dirname 跟basename相反
file filename 用来确定文件类型
logname 显示当前使用的登陆用户名
简单的if控制语句
=======================
if [ -d f1 ]; then
echo "is dir"
else
echo "not dir";
fi
=======================
==================================
functioncheckUser(){
name[0]="admin"
name[1]="test"
name[2]="sysadmin"
name[3]="op"
for rowin ${name};do
if [$row = $1 ];then
return 0
fi
done
return1
}
pass=N
read -p"please input login username:" -t 30 username
while [ $pass = N];do
ifcheckUser $username;then
echo "username pass"
exit 1
else
read -p "pass not right,please input again:" -t 30username
fi
done
======================================
简单的用户验证脚本
if cp myfilemyfile.bak;then
mysqldump-h127.0.0.1 -uroot notice > /tmp/notice.sql
cd /tmp
get notice.sql
rm-fr notice.sql
mysql ad1 </tmp/ad.sql -uroot -p
导入数据
temph=`date | cut-c12-13`
截取date的第12个和第13个字符
echo -e "\033[34m qweqwe "
RESET QUERY CACHE;
清理查询缓存
SHOW VARIABLES LIKE'have_query_cache';
INSERT INTO user
SELECT *
FROM user
WHERE user.user ='group' ON DUPLICATE
KEY UPDATEuser.user = 'notice'
UPDATE user SETPASSWORD = md5( 'notice.tiger' ) WHERE User = 'notice'
原来mysql的md5和password不一样
group2
INSERT INTO db
SELECT *
FROM db
WHERE db.user ='group2' ON DUPLICATE
KEY UPDATEuser.user = 'group2'
INSERT INTOmysql.db
SELECT *
FROM mysql.db
WHERE mysql.db.user= 'notice' ON DUPLICATE
KEY UPDATEmysql.db.user = 'noticea'
修改数据库权限后要重启mysql才能生效
/usr/local/bin/convertlifestyle_logo.gif -resize 90x90 out.gif
which php
which convert
查找命令的目录文件
/usr/local/bin/convert-mattecolor "#000000" -frame "3x3"lifestyle_logo.gif remember.gif
为图片加边框,边框颜色是黑色,边框宽度和高度都是3px
/usr/local/bin/convert-fill green -pointsize 40 -draw 'text 10,50 "google"'lifestyle_logo.gif fill.gif
为图片加文字,用green颜色字体大小40,距离左上角10*50位置,文字为google
/usr/local/bin/convertanimation.gif frmae%02d.gif
把gif文件分解为一系列的单个图片
- �h端登�
- �h端�绦�
[email protected] 'command ...'
- �h端�}制
scp [email protected]:/remote/path/local/path
scp /local/[email protected]:/remote/path
id username
last
df -h
显示所有磁盘系统的信息
show variables like'datadir'
显示mysql的数据库目录
mysqladmin -h127.0.0.1-uroot variables
如何修改mysql的默认帐号root
use mysql;
update user setpassword=password('passowrd') where user='root';
flush privileges; 刷新内存中的权限表
使用mysqladmin和set password,会自动重载该表
mysql>grant allon db.* to 'test'@'%' identified by 'test';
上例运行后的效果是,test用户可通过‘test’密码从任意计算机上访问db数据库。‘%’代表任意字符,‘_’代表一个任意字符。主机名部份还可以是IP地址
flush logs;
ALTER TABLEtable_name DISABLE KEYS;
禁用索引
ALTER TABLEtable_name ENABLE KEYS;
启用索引
% mysqldump --opttestdb | gzip > /data/backup/testdb.bak
#--opt选项会对转储过程进行优化,生成的备份文件会小一点,后的管道操作会进行数据压缩
% mysqldump --opttestdb mytable1,mytable2 | gzip > /data/backup/testdb_mytable.bak
#可在数据库后接数据表名,只导出指定的数据表,多个数据表可用逗号分隔
delete fromtable_name;
or
truncate tabletable_name
与
delete fromtable_name where 1;区别
查看mysql运行以来连接计数
show status wherevariable_name = "Connections";
查看当前客户连接数量
show status wherevariable_name ="Threads_connected"
语法:
UNIQUE KEY `test`(`xref_key`,`xref_dbname`)
UNIQUE KEY`xref_key` (`xref_key`,`xref_dbname`)
上述语法检查xref_key与xref_dbname的组合是否是唯一值,可以设定多个字段的组合。其中,test是索引表中的字段名称。
该方法适合用来解决多个字段相互依赖,且必须满足唯一性的条件的情况。在经常新增或删除资料表中auto_increment的primary key会造成大量的断层,这类易变动的资料表使用auto_increment并不是一个很适合的索引值,所以可以采取unique key来处理。
rm -fr clean*
SELECT count(1)
FROM group_members
WHERE date_join> '2008-08-22 09:14'
AND date_join <'2008-09-09 10:44'
mysql时间比较
加了新的apache vhost文件, 重启apache前请用apachectlconfigtest 测试配置文件.