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' mail 收邮件 修改邮件路径可以在/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`; [iyunv@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 sshroot@10.10.208.5:/etc/hosts /etc/ mysqldump-h127.0.0.1 -uusername -ppass dbname > db.sql 导出数据库 sftpusername@127.0.0.1 连接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())); 生成唯一标识 explorerhttp://www.sohu.com 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 http://127.0.0.1/server-status 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/group2.sqlsunchangwei@192.168.0.2:/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 sftproot@127.0.0.1 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文件分解为一系列的单个图片 - 遠端登錄 sshuser@remote.machine - 遠端執行 sshuser@remote.machine 'command ...' - 遠端複制 scp user@remote.machine:/remote/path/local/path scp /local/pathuser@remote.machine:/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 测试配置文件.
|