linux常用维护命令记录

    xiaoxiao2026-10-03  3

    (1)让程序在用户退出后仍然在运行 1 ctrl+z暂停程序 2 bg让程序在后台运行 3 退出用户登录即可   (2)用find命令查找指定的文件,并且执行rm操作 find ./ -name "Dong*" -exec rm -f {} \;   (3)递归搜索含有某个关键字的文件目录。 grep -iHR "****" ./* -i 对要搜索的字符忽略大小写 -H 同时打印包括搜索字符串的文件名 -R 递归搜索,当指定的搜索路径是一个目录时,加了-R的搜索会执行递归搜索   (4)linux 硬件时间查看hkclock --show          硬件时间修改 hwclock --set --date='04/27/2010 18:05:00'          系统时间与硬件时间同步hwclock --hctosys   (5)scp拷贝文件,key的方式 /usr/bin/ssh -x -oForwardAgent no -oPermitLocalCommand no -oClearAllForwardings yes -i/root/.ssh/iptvcp 10.0.51.198 scp -r -d -t /letv/...   (6)查看组播情况 netstat -ng   (7)smarttools可以获取硬盘重要参数   (8)grep 精确查找 grep -w   (9)expr模式匹配     expr也有模式匹配功能。可以使用expr通过指定冒号选项计算字符串中字符数。.*意即任   何字符重复0次或多次。expr $a : '[a-zA-Z]*'   (10)vim 行左对齐 :1,$ left   (11)倒序字符串,倒序下文件中字符串内容 rev +文件名   (12)sed将"/file/file1"替换为"\/file\/file1" sed -e 's/\//\\\//g' sed -E -e "s:\\/:\\\\\/:g"(写入shell文件中)   (13)modprobe -v -r 模块名 移出模块   (14)modprobe -v 模块名 加载模块   (15)lsmod|grep 模块名 查看相关依赖关系的模块   (16)modinfo 查看模块的信息,及相关的配置参数 modinfo 模块名   (17)ssh登录较慢 去除dns反解析 UseDNS no   (18)ssh 连接开机详细输出 ssh -v   (19)pkill命令使用方法 pkill 加命令名称 可以杀死命令   (20)ntpdate 同步server地址 128.138.140.44   (21)date 命令设置时间 date -s 20080925 date -s 21:19:50   (22)linux ntpd配置 ntpstat 查看自身服务器与上一级服务器之间的连接状态 如果出现:synchronised to local net at stratum 则需要检查#server 127.127.1.0 # local clock           #fudge 127.127.1.0 stratum 10 是否已经备注           (23)(52)可用内存数 total-free-cache-buffer   (24)ps -auxww 按相关使用量排序 由于ps的输出是一PID号的顺序显示的,若要实现按照某一项使用量排序,需要把某项放入最前面。 ps -auxww|awk '{print $5,$1,$11}'|sort -r|more (按照内存使用量排序) 按内存的大到小排序 按虚拟内存从大到小排列进程: ps -eo "%C%p%z%a"|sort -k3 -nr 按实际使用内存百分比排序 ps -eo user,pid,size,pmem,vsize,command|sort -k4 -nr|more 查看并发访问用户的前10位 netstat -anp|grep 80|grep ESTAB|awk '{print $5}'|awk -F ':' '{print $1}'|sort |uniq -c|sort -rn|head -n 10 对cpu访问量高进程排序 ps -eo user,pid,size,pmem,vsize,command,%cpu|sort -k7 -nr|more   (25)1080p硬盘(2t容量)挂载在115.182.51.25(centos系统)上时会会报错,初步估计是由于linux系统对移动硬盘容量的限制引起的问题,而在挂载我自己的移动硬盘时没有出现此情况。    错误情况:“the partition table is corrupt (partition is smaller than NTFS)”    linux系统挂载ntfs    需要安装ntfs-3f fuse   (26)查看进程打开的文件: lsof -p PID   (27)杀死某一进程,杀死Nginx进程(杀死某一进程) ps -ef|grep -v grep |grep nginx|awk '{print $2}' 或 for i in `ps aux | grep nginx | grep -v grep | awk {'print $2'}` ; do kill $i; done   (28)清空linux buffer cache sync && echo 3 > /proc/sys/vm/drop_caches   (29)linux测试硬盘读写速度 time有计时作用,dd用于复制,从if读出,写到of。if=/dev/zero不产生IO,因此可以用来测试纯写速度。同理of=/dev/null不产生IO,可以用来测试纯读速度。bs是每次读或写的大小,即一个块的大小,count是读写块的数量。   1.测/目录所在磁盘的纯写速度:   [root@base-dmz1 /]# time dd if=/dev/zero bs=1024 count=1000000 of=/1Gb.file   2.测/目录所在磁盘的纯读速度:   dd if=/kvm/ftp/other/1Gb.file bs=64k |dd of=/dev/null   3.测读写速度(这是什么):   dd if=/vat/test of=/oradata/test1 bs=64k   理论上复制量越大测试越准确。   (30)crontab中用什么命令定义某个程序执行的优先级别 nice/renice:进程执行优先级 概念: 进程优先级:系统按进程优先级的不同分配CPU时间,优先级高的进程会得到更多的CPU使用时间,以提高速度,缩短总的执行时间。 进程优先级范围:-20至19 最高等级:-20 最低等级:19 系统管理员有权将进程优先级设置为-1至-20,而普通用户只能设置0至19。 进程运行的默认等级为0。 用nice执行的进程其默认等级为10(即nice <程序名>,不指定等级时)。 格式: nice <程序名> nice -<等级> <程序名> 如:(命令后加&表示以后台运行) vi & 优先等级0,默认等级。 nice vi & 优先等级10,使用nice执行程序时的默认等级。 nice -50 vi & 优先等级19,-号表示选项,等级50超过最低等级19,因此系统以等级19执行。 nice -18 vi & 优先等级18。 nice --50 vi & 优先等级-20,选项值为-50,超过最高等级-20,因此系统以等级-20执行。 nice --18 vi & 优先等级-18。 通过ps -l可查看以上命令的执行情况(注意查看各vi进程NI值的不同)。 重新调整正在执行的进程的优先级: 调整指定PID进程的等级 renice <等级> <PID> 注意:<等级>是参数,不是选项,没有前缀-号。 调整指定用户的所有进程的等级 renice <等级> <用户名1> <用户名2> ... 调整指定组的所有用户的所有进程的等级 renice <等级> -g <组名1>   (31)xargs是一条Unix和类Unix操作系统的常用命令。它的作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题 find . -name "*.foo" -print0 | xargs -0 -i mv {} /tmp/trash 使用-i参数将{}中内容替换为列表中的内容   (32)为已经存在的目录添加系统用户 useradd -d /bak_important -s /sbin/nologin xiaochun -p xiaochun   (33)linux内存计算 一个公式: 物理内存 + 占用的swap = 空闲物理内存 + Memory buffer + Disk Cache + 使用掉的驻留内存 4G + 53MB = 17MB + 46MB + 3.2GB + ? 所以使用掉的驻留内存差不多有700-800MB 再累计你top出来那些进程的驻留内存数量,应该是八九不离十的。 从你的操作系统的性能数据来看,物理内存还空闲的很,大部分物理内存被操作系统用做disk cache,可能你的系统IO还是稍微有点频繁的。swap也占用了一点,说明操作系统曾经出现过短暂的内存吃紧的状况,把一些闲置进程换到了swap上 去了,而这些闲置进程一直也没有再被使用到过,所以一直待在swap里面没有出来过。   (34)strace 跟踪程式执行时的系统调用和所接收的信号.通常的用法是strace执行一直到commande结束. 并且将所调用的系统调用的名称、参数和返回值输出到标准输出或者输出到-o指定的文件. strace是一个功能强大的调试,分析诊断工具.你将发现他是一个极好的帮手在你要调试一个无法看到源码或者源码无法在编 man strace   (35)ldd + 进程名 查看命令进程所使用库   (36)watch 时时执行某个命令 -n 间隔时间差 watch -n1 "ps -auxww"   (37)vncserver xstartup gnome启动 vi ~/.vnc/xstartup gnome-session &   (38)nmap -v -sP 192.168.0.0/24扫描网段存活机器。   (39)gpt可以挂载超过2T存储空间   (40)ext3最大文件系统限制8T,故可以使用ext4方式挂载。 突破文件系统的限制 ext4 的一个明显差别就是它支持更大的文件系统、文件和子目录。ext4 支持的最大文件系统为 1 EB(1000 PB)。虽然根据今天的标准这个文件系统已经非常巨大,但存储空间的消费会不断增长,因此 ext4 必须考虑到未来的发展。ext4 支持最大 16 TB 的文件(假设由 4KB 的块组成),这个容量是 ext3 的 8 倍。 最后,ext4 也扩展了子目录的容量,将其从 32KB 扩展到无穷大。这是极端情况,我们还需要考虑文件系统的层次结构,因为它的最大存储容量为 1 EB。此外,目录索引也优化为类似于散列 B 树结构,因此尽管限制更加多,但 ext4 支持更快的查找。   (41)装机忘记安装swap分区,用dd创建 第一步: dd if=/dev/zero of=swapfile count=200 bs=1024k count 为几个块 bs 每个块多少个字节 第二步: mkswap swapfile (你刚刚生成的文件) 第三步: swapon swapfile 用free命令看看就知道了,或cat /proc/swaps Filename Type Size Used Priority /dev/hda6 partition 497972 91584 -1 /root/swapfile file 10232 0 -2 /root/swapfile 就是你生成的文件 第四步: 在/etc/fstab 中加入 /root/swapfile swap swap defaults 0 0 每次重启后swap分区自己mount上了。 如果你想去掉就用swapoff swapfile 对于分区格式的swap,你可以分出一个分区来,用mkswap 分区, swapon 分区, 在fstab中把/root/swapfile 换成你的分区就可以了。   (42)rsync 除开某些目录不能同步 rsync -avzP --exclude-from=/data/bin/rsync/rsync_exclude.list /data/ifengsite/htdocs/ 10.13.2.104::blog_code rsync_exclude.list文件内容: - dir_cdn - special - reborn_admin/ - log - dir_cache/   rsync 除开某些类型文件不让同步 /usr/bin/rsync -avzP --exclude '*.svn' /ifeng/alading/aladdin/trunk/develop/ alading@119.254.74.203::alading   (43)php 动态模块和静态模块编译 我的理解:php静态编译,就是在php源码安装时./configue --enable ??添加的。           php动态编译,就是在php编译完后 需要动态的加载,则执行,一般安装的目录在php源码目录下ext/?? ,执行如下:           /usr/local/php/bin/phpize           ./configure --with-php-config=/usr/local/php/bin/php-config           make && make install 需要注意的是:如果已经静态编译了,再动态添加时,php会报警告信息,如:Warning: PHP Startup: Invalid library (maybe not a PHP library)            php -m查看php已经添加了的模块            php -i 查看php相关信息           (44)passwd 用户锁定解锁       passwd -l username锁定用户       passwd -u username解锁用户       (45)swap不足时解决之道,清空swap       swapoff all       swapon all       (46)得到7天前日期号   date +%Y%m%d --date="7 day ago"   (47)系统开通临时账户,有效期1天   useradd -e tomorrow xxxxxxx   useradd -e 25/6/2011 xxxxxxx   usermod -e tomorrow xxxxxxxs   (48)smb共享windows下数据   smbclient //192.168.14.20/tddownload -U user%newuser   (49) awk '{if($5>20 || $5==10) {print $1}}' example1.txt 在来一个初级的又增加了一个“if($5>20 || $5==10)” 做逻辑判断逻辑判断的三个“|| && !” 或、与、非三个可以任意加到里面, 这个语句的意思是如果第5列大于20或者等于10的都显示处理,在我们的工作中可能有用户会要求找出所有空间大于多少的或者是空 间等于多少的账户然后再做批量修改。   (50)linux 批量删除进程      #!/bin/sh      for sid in `ps aux|grep sftp|awk '{print$2}'`      do      kill -9 $sid      done       (51)sed 删除最后行      sed "$d" ./filname.txt      sed -e /abcd/d 删除包含abcd的行   (52)linux svn使用       注意:需要先checkout 然后才能update   (53)tar排除打包总结(19:54 2009-3-19)        man tar:        --exclude PATTERN                exclude files based upon PATTERN          -X, --exclude-from FILE                exclude files listed in FILE                 (54)批量修改文件名   for file in \`ls *.HTM\`     do    newfile=\`echo \$file | tr A-Z a-z\`    mv \$file \$newfile   done   (55)linux svn 提交同步脚本    #1:svn checkout 内容    svn checkout svn://url/filename    #svn update    cd svn目录    find ./ |grep -wv '.svn'|xargs svn add    #find ./ |grep -wv '.svn'|xargs svn commit -m “”    find ./ |grep -wv '.svn'|xargs svn commit -m `date "+%Y-%m-%d"`     (56)grep 有时可能需要用sed ,awk同时匹配多个单词    匹配kobe或james:     sed -n '/\(kobe\|james\)/p'     awk '/kobe/||/james/{ print $0 }'     grep -E '(kobe|james)'   (57)网络传输边传输边压缩方法     从A机上传送16G文件夹到B机上打包的方法     先在B机上运行:     nc -l 1985 > bak.tar.gz     再在A机上运行:     tar cz . | nc 192.168.9.101 1985     (58)useradd 添加一个备份的用户   useradd -M -s /sbin/nologin -g backup -u 88 backup   (59)svn 同步数据时svn: Can't recode string export LC_CTYPE=en_US.UTF-8     #!/bin/bash     export LC_CTYPE=en_US.UTF-8     /usr/bin/svn update /data/ifengsite/htdocs     chmod 777 -R /data/ifengsite/htdocs     chown www:www -R /data/ifengsite/htdocs     (60)usermod -e 2011-08-25 username      设置用户的过期时间       (61)rsync --delete参数使用 删除源文件中没有的 目标文件中有的(注意必须加/)      /tmp/file1      /tmp/dir1      /tmp/dir1/a 如rsync -avz –delete /tmp/* 10.10.10.10::A 这里的delete参数对/tmp/file1没有影响,会影响到/tmp/dir1/a   如rsync -avz –delete /tmp/ 10.10.10.10::A 这里的delete参数对/tmp/file1和/tmp/dir1/a都有影响   (62)useradd 添加一个备份的用户   useradd -M -s /sbin/nologin -g backup -u 88 backup   rsync -vzrpg --size-only --progress ./db 192.168.20.191::inetdb>>/tmp/rsync.log 2>&1 &   (63)Screen实现后台运行程序的简单步骤:       1> 要进行某项操作时,先使用命令创建一个Screen:       [linux@user~]$ screen -S test1       2>接着就可以在里面进行操作了,如果你的任务还没完成就要走开的话,使用命令保留Screen:       [linux@user~]$ Ctrl+a+d #按Ctrl+a,然后再按d即可保留Screen       [detached] #这时会显示出这个提示,说明已经保留好Screen了       如果你工作完成的话,就直接输入:       [linux@user~]$ exit #这样就表示成功退出了       [screen is terminating]       3> 如果你上一次保留了Screen,可以使用命令查看:       [linux@user~]$ screen -ls       There is a screen on:       9649.test1 (Detached)       恢复Screen,使用命令:       [linux@user~]$ screen -r test1 (or 9649)       (64)wget ftp服务文件,密码方式       wget ftp://username:password@ip_address/dir/file_name       (65)删除2天前的并且非logs|api|article|audit|blog|detect|index|queue|stat|tag|user的文件夹        find ${basedir} -type d |grep -wvE "(logs|api|article|audit|blog|detect|index|queue|stat|tag|user)$"|grep -v -E "(${dates}|${time})"|xargs rm -rf         (66)linux 以某个用户的权限执行       su -c "命令" "用户"       (67)清理swap内存          swapoff -a          swapon -a           (68)top命令打印需要信息          默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通过下面的快捷键来更改          显示内容。更改显示内容通过 f 键可以选择显示的内容。按 f 键之后会显示列的列表,按 a-z 即可显示或隐藏对应的列,最后按回车键确定。           (69)find 递归遍历删除         find / -name 'appMonitorFileUpload.do*' -maxdepth 1 -exec mv {} /data/appMonitor/ \;         -maxdepth 1对大递归到第一级         运行rm mv 报Argument list too long 错误的时候 需要用find操作模式         (70) rsync 设置传输的字符集 charset = UTF-8   (71)查看系统下的一个进程         ps -eLf         (72)linux下将用户锁定在主目录,设置最小权限          cp -a /bin/bash /bin/rbash          useradd -c "A Restricted User" -g www -d /data/htdocs/bbsplay_ifeng_com/follow -s /bin/rbash feiguoxin          chown 777 /data/htdocs/bbsplay_ifeng_com/follow -R          chmod 777 /data/htdocs/bbsplay_ifeng_com/follow -R          chown root.root /data/htdocs/bbsplay_ifeng_com/follow -R          useradd -c "A Restricted User" -g www -d /data/htdocs/bbsplay_ifeng_com/follow -s /bin/rbash feiguoxin          vi /etc/passwd          mkdir -m 755 /data/htdocs/bbsplay_ifeng_com/follow          mkdir -m 555 /data/htdocs/bbsplay_ifeng_com/follow/bin          cp -a /bin/ls /data/htdocs/bbsplay_ifeng_com/follow/bin/          cp -a /bin/cp /data/htdocs/bbsplay_ifeng_com/follow/bin/          cp -a /usr/bin/passwd /data/htdocs/bbsplay_ifeng_com/follow/bin/          vi /data/htdocs/bbsplay_ifeng_com/follow/.bash_profile          chmod 444 /data/htdocs/bbsplay_ifeng_com/follow/.bash_profile export PATH=/data/htdocs/bbsplay_ifeng_com/follow/bin          passwd feiguoxin           (73)nginx 正向代理       server       {         listen 8080;           location / {           resolver 8.8.8.8;           proxy_pass http://$host$request_uri;           }        access_log /data/logs/nginx/nginxforward.log access;        }         (74)mount挂载很慢,服务端客户端都需要启动       /etc/ini.d/portmap 需要启动       (75)VIRT:virtual memory usage。Virtual这个词很神,一般解释是:virtual adj.虚的, 实质的, [物]有效的, 事实上的。到底是虚的还是实的?        让Google给Define之后,将就明白一点,就是这东西还是非物质的,但是有效果的,不发生在真实世界的,发生在软件世界的等等。这个内存使        用就是一个应用占有的地址空间,只是要应用程序要求的,就全算在这里,而不管它真的用了没有。写程序怕出错,又不在乎占用的时候,多开        点内存也是很正常的。        RES:resident memory usage。常驻内存。这个值就是该应用程序真的使用的内存,但还有两个小问题,一是有些东西可能放在交换盘上了        (SWAP),二是有些内存可能是共享的。        SHR:shared memory。共享内存。就是说这一块内存空间有可能也被其他应用程序使用着;而Virt - Shr似乎就是这个程序所要求的并且没有共        享的内存空间。        DATA:数据占用的内存。如果top没有显示,按f键可以显示出来。这一块是真正的该程序要求的数据空间,是真正在运行中要使用的。          所以DATA的含义比较确定,甚至可以用程序读取的数据量计算出来;        SHR是一个潜在的可能会被共享的数字,如果只开一个程序,也没有别人共同        使用它;VIRT里面的可能性更多,比如它可能计算了被许多X的库所共享的内存;RES应该是比较准确的,但不含有交换出去的空间;但基本可以        说RES是程序当前使用的内存量。         (76)列出机器上所有的crontab        cat /var/spool/cron/*         (77)问题现象:linux操作系统中的/var/spool/clientmqueue/目录下存在大量文件。 原因分析:系统中有用户开启了cron,而cron中执行的程序有输出内容,输出内容会以邮件形式发给cron的用户,而sendmail没有启动所以就产生了这些文件; 解决办法:     1、 将crontab里面的命令后面加上> /dev/null 2>&1     2>:重定向错误。     2>&1:把错误重定向到输出要送到的地方。即把上述命令的执行结果重定向到/dev/null,即抛弃,同时,把产生的错误也抛弃。     3、具体代码:     (1)、# crontab -u cvsroot -l     01 01 * * * /opt/bak/backup     01 02 * * * /opt/bak/backup2     (2)、# vi /opt/bak/backup#!/bin/shcd /     getfacl -R repository > /opt/bak/backup.acl     (3)、# vi /opt/bak/backup2#!/bin/shweek=`date +%w`     tar zcvfp /opt/bak/cvs$week/cvs.tar.gz /repository >/dev/null 2>&1    4、清除/var/spool/clientmqueue/目录下的文件:# cd /var/spool/clientmqueue# rm -rf *如果文件太多,占用空间太大,用上面命令删除慢的话,就执行下面的命令:#    # cd /var/spool/clientmqueue    # ls | xargs rm -f     (78)查看连接状态类型       netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'       ls | xargs -n 10 rm -fr       (79)查找权限为777的目录       find . -maxdepth 5 -type d -perm 777 -print       (80)测试硬盘访问速度       hdparm -Tt /dev/sda       (81)linux 修改时区           timeconfig           (82)varnishdlog 显示varnishd终端日志,和一些连接情况。            varnishstat 查看varnish 缓存命中率             (83)追踪php执行情况,strace追踪信号及系统调用        找其中一个 CPU 100% 的 php-cgi 进程的 PID,用以下命令跟踪一下:strace -p 10747         (84)linux 系统显示中文乱码 修改/etc/sysconfig/i18n文件 #LANG="en_US.UTF-8" #SUPPORTED="en_US.UTF-8:en_US:en" #SYSFONT="latarcyrheb-sun16" 改为 LANG="zh_CN.GB18030" LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN" SUPPORTED="zh_CN.GB18030:zh_CN:zh" SYSFONT="lat0-sun16" SYSFONTACM="8859-15"   (85)rsync 命令svn 文件目录同步 exclude文件             - fold/#文件夹             - file #文件             (86)批量替换某个文件夹下所有文件的指定字符串 sed -i "s/oldstring/newstring/g" `grep "oldstring" -rl path` sed -i "s/192.168.140.11/192.168.140.13/g" `grep "192.168.140.11" -rl ./`   (87)查看某进程名线程 ps -eLf|grep java|grep com.talkweb.MainStart   (88)查看出口ip curl http://members.3322.org/dyndns/getip   (89)ssh生成key 1、原理:首先由用户生成一对密钥,然后将公钥保存在SSH服务器用户的目录下.ssh子目录中的authorized_key文件里(/root/.ssh/authorized_key).私钥保存在本地计算机.当用户登陆时,服务器检查authorized_key文件的公钥是否与用户的私钥对应,如果相符则允许登入,否则拒绝.由于私钥只有保存在用户的本地计算机中,因此入侵者就算得到用户口令,也不能登陆到服务器. 2、启用公钥认证 修改配置文件/etc/ssh/sshd_config 将"PasswordAuthentication yes"修改为"PasswordAuthentication no" 3、生成密钥 [root@rain ~]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: 4d:dd:48:af:76:c2:ba:a8:bc:20:f3:28:1d:6a:28:53 root@rain.fish.com 4、将/root/.ssh/id_rsa.pub改名为/root/.ssh/authorized_keys mv /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys 5、将私钥id_rsa拷贝到客户机 A:linux下可以拷贝到/root/.ssh/就可以直接使用了   (90)linux 增加路由 route add -net 192.168.8.0 netmask 255.255.255.0 gw 192.168.129.254   (91)查看指定用户进程 ps -fu 用户名   (92)tomcat 自动解压war包 将war包拷贝到tomcat webapps目录下时,如果不存在同名工程,则启动tomcat时会解压war包,从而生成一同名工程。 然而,如果webapps下已经存在与war包同名的工程目录,则即使重启tomcat,也不会重新解压此war包,也就是说,运行的仍是之前同名工程目录下的代码,而不是war包中的新代码。   (92)linux查找制动文件 指定文件内容 find ./ -type f -name '*.java' -print|xargs grep -i 'piaolala' ./   (93)按时间生成目录 find /data/his_version/ -type d -maxdepth 1 |grep -wv '/data/his_version/'|xargs -t -i mkdir {}/`date +%Y`_`date +%m`_`date +%d`_`date +%H`;chmod -R 777 /data/his_version/   (94)jar包提取包指定文件 jar -xvf ./piaolala-biz-1.0.jar springcontext-dao -C /home/www1.6/piaolalabiz/tomcat6/webapps/piaolalabiz/WEB-INF/classes/ jar -xvf ./piaolala-biz-1.0.jar spring/springcontext-dypgz-biz.xml   (95)awk 实现按条件输出内容 cat test|awk '{if($1~"####*") printf $1 "\n"; else {printf $5 "\t" $6 "\t" $11 "\n"}}'   (96)sed去空格 sed s/[[:space:]]//g   (97)linux 批量查找替换  find ./ -type f -name consumer.xml -exec sed -i "s/192.168.129.41\:5000/192.168.140.11\:6000/g" {} \;   (98)linux 端口监听的情况 netstat -n| awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'   (99)ssh key认证无法登陆,Authentication refused: bad ownership or modes for directory /home/www1.6 /home/www1.6 目录别的用户不能有写的权限 /home/www1.6/.ssh/authorized_keys 权限为600   (100)处理shell中未赋值变量造成的灾难 当设置set -u 后,使用未赋值的变量时shell将自动退出   (101)pwdx + 进程名 查找启动进程时路劲 (102)linux 安装字体 Times New Roman Step 1: Download the msttcorefonts-2.0-.1.noarch.rpm package from http://physweb.bgu.ac.il/DOWNLOADS/RPMs/msttcorefonts-2.0-1.noarch.rpm Step 2: Install that .rpm package in your system . ubuntu 已经安装  wget http://tw.archive.ubuntu.com/ubuntu/pool/multiverse/m/msttcorefonts/msttcorefonts_2.4_all.deb   dpkg -i ./msttcorefonts_2.4_all.deb   aptitude install msttcorefonts   apt-get install xfonts-utils   mkfontscale   fc-cache -fv   (103)去除文件的空格 sed s/[[:space:]]//g ./info.txt >info.TXT   (104)shell遍历文件内容的空格处理问题 需要加入 old_IFS=$IFS IFS=$(echo -en "\n\b") IFS=$old_IFS   (105)ubuntu 后台更改密码 echo 'talkyun:chenjiegege'| chpasswd -m   (106)用chattr命令防止系统中某个关键文件被修改: # chattr +i /etc/resolv.conf   (107)vsftpd ubuntu登陆遇到500的问题 vi /etc/shell 加入对应的vftp用户权限的登陆bash 如:/sbin/false /bin/nologin   (108)linux流量查看工具 CentOS系统: yum install flex byacc libpcap ncurses ncurses-devel wget ftp://fr2.rpmfind.net/linux/dag/redhat/el5/en/i386/dag/RPMS/iftop-0.17-1.el5.rf.i386.rpm rpm -ivh iftop-0.17-1.el5.rf.i386.rpm Debian系统 运行:apt-get install iftop 界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。   中间的<= =>这两个左右箭头,表示的是流量的方向。   TX:发送流量 RX:接收流量 TOTAL:总流量 Cumm:运行iftop到目前时间的总流量 peak:流量峰值 rates:分别表示过去 2s 10s 40s 的平均流量 -i设定监测的网卡,如:# iftop -i eth1   -B 以bytes为单位显示流量(默认是bits),如:# iftop -B   (109)修改ubuntu默认的编辑器 echo export EDITOR=/usr/bin/vim >> ~/.bashrc   (110)查看指定用户的所有pid ps -auxww|awk '{if ($1="root") print $2}'   (111)查看linux系统硬件情况 处理器支持 cat /proc/cpuinfo 内存 cat /proc/meminfo 硬盘机及cdrom            ls /proc/ide            head /proc/ide/hd*/media            head /proc/ide/hd*/model             查看pci设备总线 lspci -v   (112)TCPDUMP查看udp的包 tcpdump -i eth0 -t udp and host 10.105.28.14   (113)查看制定端口的http连接状态 tcpflow -c -p -i eth0 src port 80|grep HTTP   (114)top命令按照占用内存的使用情况排序 top 按住shift+m排序   (115)vim 块批量操作,前添加或者替换 1:先安装shift 上下键 选中所选行。 2:按住:键 3: :'<,'>s/^/##/   (116)查看链接状态  netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'   (117)yum 查找哪个rpm包能所需要提供的.so yum whatprovides "*/*libcrypto.so.6"   (118)yum 报错 /usr/lib64/python2.6/site-packages/pycurl.so: undefined symbol: CRYPTO_set_locking_callback 我只要pycurl.so它一个,所以进入pycurl-7.19.0\src 修改下 vim Makefile PYINCLUDE=/usr/include/python2.6/ 注意这儿需要 python-devel, 没安装的就安装吧(就当更新python玩吧) yum install python-devel OK, 编译下pycurl.so make cp /usr/lib64/python2.6/site-packages/pycurl.so /home/backup ##备份下之前,有问题也好恢复 cp ./pycurl.so /usr/lib64/python2.6/site-packages/pycurl.so   (119) 查看RPM包内容 rpm2cpio *.rpm | cpio --list -i rpm -qpl *.rpm 解压获取rpm包文件 rpm2cpio *.rpm| cpio -div   (120) 有些软件包是以.src.rpm结尾的,这类软件包是包含了源代码的rpm包,在安装时需要进行编译。这类软件包有两种安装方法:   方法一: 1. 执行rpm -i your-package.src.rpm 2. cd /usr/src/redhat/SPECS 3. rpmbuild -bp your-package.specs 一个和你的软件包同名的specs文件 4. cd /usr/src/redhat/BUILD/your-package/ 一个和你的软件包同名的目录 5. ./configure 这一步和编译普通的源码软件一样,可以加上参数 6. make 7. make install   方法二: 1. 执行rpm -i you-package.src.rpm 2. cd /usr/src/redhat/SPECS (前两步和方法一相同) 3. rpmbuild -bb your-package.specs 一个和你的软件包同名的specs文件   这时,在/usr/src/redhat/RPM/i386/ (根据具体包的不同,也可能是i686,noarch等等) 在这个目录下,有一个新的rpm包,这个是编译好的二进制文件。执行:   rpm -i new-package.rpm即可安装完成。   rpm安装方式:rpm -ivh *.rmp   (121)解决系统滥用swap内存的情况 清除系统内存缓存 echo 1 > /proc/sys/vm/drop_caches 恢复系统内存缓存 echo 0 > /proc/sys/vm/drop_caches 调节内存使用倾向,数值越小,越使用物理内存 echo 1 > /proc/sys/vm/swappiness 清空swap swapoff -a 启用swap swapon -a   (122)命令删除文件的第一行 sed -i '1,1 d' filepath   (123)复制多行 nyy 复制多行,光标移动到起始处,复制当前行下的多行。   (124)vim 自动匹配查找的当前需要字符 点至单词光标开始处-*键   (125)cron没法正确处理反引号` /usr/bin/rsync -avzP /opt/logs/tornado/`date --date="1 days ago" +\%Y\%m\%d` 10.105.28.41::api_log/ad/10.106.28.22 解决:在%前面都加上反斜杠。   (126)修改linux网卡名字 1、在grub里增加biosdevname=0的启动参数,形如l   kernel /vmlinuz-2.6.32-131.21.1.el6.i686 ro root=/dev/mapper/vg_test-lv_root rd_LVM_LV=vg_test/lv_root rd_LVM_LV=vg_test/lv_swap rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latar cyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us crashkernel=auto rhgb quiet biosdevname=0   2、删除udev的配置文件rm -f /etc/udev/rules.d/70-persistent-net.rules   3、把网卡配置文件改名   mv ifcfg-em1 ifcfg-eth0   4、把网卡配置文件内容修正,把em1的全部改成eth0 可以使用 perl -p -i -e 's/em1/eth0/g' ifcfg-eth0 或sed -i 's/em1/eth0/g' ifcfg-eth0 进行替换。 5、重启系统即可.   (127)tcpdum 抓包次数 tcpdump -c 20 -i eth0 src host   (128)如何用tcpdump只抓取HTTP协议包 tcpdump -np -i eth0 tcp[20:2]=0x4854   (129)firefox Selenium. Firefox里面一个插件selenium,已经自动录制页面中执行的操作。 既可以保存为html格式的,又可以保存为java格式文件。不过java格式的需要在java命令下执行。 暂停使用: <tr>  <td>pause</td>  <td>30000</td>  <td></td> </tr>   (130)批量替换主机名,将a.a.a.a替换为a-a-a-a sed -i '/HOSTNAME=/s/\./\-/g' /etc/sysconfig/network hostname `awk -F'=' '/HOSTNAME/ {print $2}' /etc/sysconfig/network`   (131)抓取udp包 分析类容  tcpdump -n -Xxv -s0 -i eth0 -p udp  tcpdump -lnA -s 0 udp and src net 10.105.28.82 and dst host 10.103.9.68   (132)查看域名所解析到的所有的ip地址 C:\Documents and Settings\Administrator>nslookup Default Server: gjjdial.bta.net.cn Address: 202.106.195.68   > ad.api.3g.youku.com Server: gjjdial.bta.net.cn Address: 202.106.195.68   Non-authoritative answer: Name: ad.api.3g.youku.com Addresses: 123.126.98.104, 123.126.98.103, 123.126.98.105, 123.126.98.102   (133)linux系统通过安装hping,实现对icmp封包的检查 wget http://www.hping.org/hping3-20051105.tar.gz tar -zxvf hping3-20051105.tar.gz  cd hping3-20051105  ./configure  ln -s /usr/include/pcap.h /usr/include/net/bpf.h  vim bytesex.h  #添加|| defined(__x86_64__) \如下:  #if defined(__i386__) \         || defined(__x86_64__) \         || defined(__alpha__) \    make  make install   (134)shell终端,回到行首 Ctrl+A 回到行尾 Ctrl+E (135)linux at 命令使用 at -t [YY]MMDDhhmm at -t 09251738 at> nohup /opt/python2.7/bin/python ./test_one_api.py >/opt/log/test_taobao.txt 2>&1 & at> <EOT> 注意:需要确保先启动了/etc/init.d/atd start   (136)linux host命令可以查找主机名返回ip信息。 host 把一个主机名解析到一个网络地址或把一个网络地址解析到一个主机名.优酷实现dnsserver是用的pdns.   (137)git Unable to find remote helper for 'https' centos 解决办法:   1.安装依赖包:   yum install -y curl curl-devel   如果失败,需要查找git-core文件后,将git-core文件的路径加入到PATH路径中: [root@bogon ~]# find / -name git-core /usr/local/libexec/git-core /usr/local/share/git-core [root@bogon ~]# export PATH=/usr/local/libexec/git-core:$PATH   (138)单用户模式下直接切换至多用户模式 init 3   (139)vim 高亮显示及显示行 "Add by chenjie "突出显示当前行 set cursorline set cursorcolumn set ru "开启行号标记 set number   (140)vim 查找不区分大小写 :set ignorecase   (141)查找目录下所有软链文件 find ./ -type l   (142)批量kill进程 ps -ef | grep -E "process name" | grep -v grep | awk '{print $2}' | xargs kill -9  for i in `ps -ef |grep ruby|grep 360|awk '{print $2}'|grep -v grep`; do kill -9 $i;done   (143)jps类似linux的ps命令,不同的是ps是用来显示进程,而jps只显示java进程,准确的说是当前用户已启动的部分java进程信息 java程序启动后,默认(请注意是默认)会在/tmp/hsperfdata_userName目录下以该进程的id为文件名 新建文件,并在该文件中存储jvm运行的相关信息,其中的userName为当前的用户名,/tmp/hsperfdat a_userName目录会存放该用户所有已经启动的java进程信息   (144)nginx匹配某个时段的日志情况 cat /opt/logs/nginx/access/log|awk -F ' ' '{if($2~/2013-10-26T20:*/&&$7=504) print $2 " " $4 " " $7}'   (145) 开启硬盘写缓存,Cache mode:启用WCE=1(Write Cache Enable), RCD=0(Read Cache Disable)模式 在磁盘驱动器的控制器上可能还有一个缓冲; 特别是在RAID控制卡上更为常见。 这些缓冲区中,有些是透过式写入,意思是写入动作 在到达的同时写入到磁盘上。其它则是回写式写入, 意思是数据将在稍后写入驱动器。这样的缓冲区是可靠性的危害, 因为磁盘控制器上的内存是易失的,在发生电力失效的情况下会丢失其中的内容。 好一些的控制器卡备有电池供电的缓冲区( BBU的 S),这意味着该卡具有的电池 可以在系统电力失效的情况下提供电力。在电力恢复之后,这些数据将会被写入磁盘驱动器。 sdparm /dev/sda sdparm --set WCE=1 --save /dev/sda   (146)利用文件acl对用户进行访问控制 setfacl -m u:chenjie2:rwx ./test/ setfacl -m u:chenjie:rx ./test/ getfacl FILENAME   (147)vim 进入粘贴模式 :set paste   (148)Xshell 快捷实用 【孰不知经常用的工具Xssh确有如此的东西并没有仔细去了解】1、【完成自动登录发送命令响应】Sending response automatically with Wait & Response session properties ->category->logon scripts  2【User defined key map support】Tools->Options->Keyboard and Mouse  3【Sending terminal contents to Notepad with click of a button】Edit->To notepad   (149)开logwatch登录权限 useradd logwatch echo 'HudonuseE324wx' | passwd logwatch --stdin   (150)设置普通权限和防止普通用户提权 #防止提权设置 sed -i 's/#UseDNS yes/UseDNS no/g' /etc/ssh/sshd_config sed -i 's/#Protocol 2,1/Protocol 2/g' /etc/ssh/sshd_config echo "alias net-pf-10 off" >> /etc/modprobe.conf echo "alias ipv6 off" >> /etc/modprobe.conf echo "install pppox /bin/true" >> /etc/modprobe.conf echo "install bluetooth /bin/true" >> /etc/modprobe.conf echo "install appletalk /bin/true" >> /etc/modprobe.conf echo "install ipx /bin/true" >> /etc/modprobe.conf echo "install sctp /bin/true" >> /etc/modprobe.conf /etc/init.d/sshd restart   # 添加系统管理用户和开发管理用户 groupadd youkudev   # 为以上两个组添加sudo权限 echo "%youkudev ALL=(ALL) ALL" >> /etc/sudoers   # useradd -g youkudev yanghongkun useradd -g youkudev lixin                               (151)Linux非root用户如何使用80端口启动程序 , 默认情况下Linux的1024以下端口是只有root用户才有权限占用,我们的tomcat,apache,nginx等等程序如果想要用普通用户来占用80端口的话就会抛出java.net.BindException: Permission denied:80的异常 如果必须要这样使用,可以将程序目录的权限设置为root 然后加上chmod u+s /dir 加上-s的权限。   (152)vim确认单个替换,前加确认 vim %s/value1/value2/gc   (153)修改文件的创建时间及修改时间 touch -t use [[CC]YY]MMDDhhmm[.ss] instead of current time   (154)ctrl+r键搜索历史输入过的命令   (155)dig逐级的查找dns域 dig +trace api.weibo.com   (156)通过ip ro的方式修改路由 ip ro 查看路由表 ip ro change default via 211.151.50.1 dev eth1   (157)修改文件句柄 sed -i '$d' /etc/security/limits.conf sed -i '$d' /etc/security/limits.conf sed -i '$d' /etc/security/limits.conf sed -i '$d' /etc/security/limits.conf echo "* soft nofile 51215" >> /etc/security/limits.conf echo "* hard nofile 65536" >> /etc/security/limits.conf echo "* soft nproc 51215" >> /etc/security/limits.conf echo "* hard nproc 65536" >> /etc/security/limits.conf echo "# End of file" >> /etc/security/limits.conf   (158)伪造head进行http请求 echo -e "GET /t \0.php HTTP/1.1\r\nHost: saiy.me\r\n\r\n" | nc -w 1 saiy.me 80   (159)svn相关命令 svn提交:svn -ci -m "" filename svn提交新文件:svn add filename                svn -ci -m 查看版本的svn信息:svn info 查看svn更新历史 svn log svn更新本地的文件:svn up svn 回退历史版本:svn up version   (160)关于redis的持久化 #redis.conf里面默认是关闭了两种持久化的。 1种,filesnapshottingsave N M表示在N秒之内,redis至少发生M次修改则redis抓快照到磁盘。 2种,Append-only,方法可以做到全部数据不丢失,但redis的性能就要差些。 AOF就可以做到全程持久化,只需要在配置文件中开启(默认是no), appendonly yes开启AOF之后,redis每执行一个修改数据的命令, 都会把它添加到aof文件中,当redis重启时,将会读取AOF文件进行“重放”以恢复到 redis关闭前的最后时刻。   (161)find查找排除某个目录 find ./ -path './interlive_deploy' -prune -o -name '*.py' -print find . -path ./upload_uc.lst -prune -o -print   (162)vim 去空行 :%s/^\n//g           (163)IP数据包的最大长度是64K字节(65535),因为在IP包头中用2个字节描述报文长度,2个字节所能表达的最大数字就是65535。 [root@renren ~]# ping -s 65535 10.103.13.163 Error: packet size 65535 is too large. Maximum is 65507 因为要封装20 字节的ip 包头和8字节的tcp包头。   (164)打印非200的nginx的日志  tail -f /opt/logs/nginx/statis/log|awk '$7!=200'   (165)vim 删除行尾空格 %s/ *$//g   (166)vim 实现比较 vim -d filename ]c  下一差异 [c  上一差异   (167)ps查看组进程的线程号  ps -eLf|grep 'python'|awk '{if($3==31418) print}'   (168)awk统计按列累加计数 ll xxx|awk '{a+=$5}END{print a}'   (169)rpm 相关使用 一个rpm包中的文件安装到那里去了? rpm -ql 包名 注意这里的是不包括.rpm后缀的软件包的名称 也就是说只能用mysql或者mysql-3.23.54a-11而 不是mysql-3.23.54a-11.rpm。 如果只是想知道可执行程序放到那里去了,也可以用which,比如 which mysql 一个rpm包中包含那些文件 一个没有安装过的软件包,使用rpm -qlp ****.rpm 一个已经安装过的软件包,还可以使用rpm -ql ****.rpm 如何获取关于一个软件包的版本,用途等相关信息? 一个没有安装过的软件包,使用rpm -qip ****.rpm 一个已经安装过的软件包, 还可以使用rpm -qi ****.rpm 某个程序是哪个软件包安装的,或者哪个软件包包含这个程序 rpm -qf `which 程序名` 返回软件包的全名 rpm -qif `which 程序名` 返回软件包的有关信息 rpm -qlf `which 程序名` 返回软件包的文件列表   (170)linux sar命令 是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。 (171)linux vim同时编辑多个文件   :sp(:vsp) 文件名    vim 将分割出一个横(纵)向窗口, 并在该窗口中打开新文件.   (172)xshell关闭警号音 Tools-Advanced-Disable bell sound (173)vim 删除行首空格 %s/\s\+//g (174)linux 以某个用户省份执行命令 su -c  “command” username (175)vim 实现用键盘复制 按v键进入到可视模式  移动箭头进行选择  然后按y 复制  Shift + insert 粘贴  (176)Kodachi v1.1 32bit :安全匿名的Linux 操作系统 (177)linux系统普通用户赋予特定的命令的权限  Cmnd_Alias TCPflow_eth0 = /usr/bin/tcpflow -i eth0  logwatch ALL = NOPASSWD:TCPflow   chmod u+s /usr/bin/tcpflow    (178)调节系统最大的文件打开数 fs.nr_open = 6553560 fs.file-max = 6553560 net.ipv4.tcp_max_orphans = 3276800   (179)Inotify是一种文件变化通知机制,通过rsync+inotify实现数据的实时备份。   (180)实时显示命令输出  watch -d 'echo stats|nc 10.105.28.133 11211|fgrep bytes'   (181)grep -oP 是在查找日志场景上系统常有用到的一个不错的命令。   (182)cp 不需要输入Y确认,需要在签名加入反斜杠符号  例 \cp -rf      (183) 用gizp 加 nc的方式 进行文件拷贝传输 源机器:  gzip -c log.20140330|nc 10.103.13.65 7000 目标机器: nc -l -p 7000|gzip -dc > log.20140330 注:目标文件比一样    (184)Xshell 左右切换session Ctrl+Tab  Ctrl+Shift+Tab    (185)修改python源为国内源  用配置文件修改的方法 。  需要新建~/.pydistutils.cfg  [easy_install] index_url =  http://mirrors.tuna.tsinghua.edu.cn/pypi/simple/   (186)yum指定本地源 yum -y install bind bind-chroot --disablerepo=\* --enablerepo=Jeson_test   (187)查看日志非200 304 400 的全打印。 tail -f ./log|awk '{if($7~/^(200|304|400)/){print $7} else{print $0}}'   (188)统计nginx accesss日志 200 304 等的个数 tail -n 20000 /opt/logs/nginx/access/log|awk '{if($7==200){i++} else if($7==304){j++} else{k++}} END{print "200 is" i "304 is " j "other is "k}'   (189)用tcpflow返回状态非正常状态的连接。  tcpflow -cp -i eth0 src port 80|grep HTTP|awk '{if($3 !~ "^(200|304|400|417)"){print $0}}'   (190)pgrep 配合top 找到多线程方式的进程使用情况。 top -d 1 -p `pgrep -f -d, nginx`   (191) tail -n 2000 ./log|awk '{if($7==504){sum++}}END{print sum}'   (192)linux对历史记录的正向查找和反向查找 。  Ctrl r, 这个键组合是反向增量查找消息历史,重复按Ctrl r将查找更早的历史。  Ctrl s,这个正好相反进行正向查找,不过会和有的终端的锁屏快捷键冲突,会设置把屏幕锁定,这时可以通过stty -ixon -ixoff来解除绑定。   (193)Ruby 在安装rbenv时,可以通过手动下载的方式安装rbenv. cd ~/.rbevn/cache wget   http://ruby.taobao.org/mirrors/ruby/2.1/ruby-2.1.2.tar.gz rbenv install 2.1.2     (194)查看一个进程具体的启动时间。          ps -p 29963(pid) -o lstart   (195) for i in `cat lst.txt`;do echo ${i};cat /opt/data/api_log/play/${i}/20140806/*.log|grep 10.103.88.113|awk -F: '{print $1}'|sort|uniq -c ;done   (196)分析nginx状态日志 cat log.20140825 |grep -E '2014-08-25T(19|20|21|22|23)'>/opt/logs/25.log  cat /opt/logs/25.log |awk '{if($7==504){aa++} else if($7==502){bb++} else if($7==500){cc++} else if($7==499){ee++} else if($7==200){ff++} else{gg++}} \ END{print "\n 504 number "aa "\n 502 number "bb "\n 500 number" cc "\n 499 number" dd "\n 200 number" ff "\n other number" gg}' (197)curl命令  curl -w '\tweb status:%{http_code}\t\tTCP connection time:%{time_connect}\tWeb first byte of data:{time_starttransfer}\tcomplete required time:%{time_total}\n'   http://gate.im.youku.com/$RANDOM (198)set ts=4 设置tab的空格数目 (199) 查看目录下隐藏文件夹的大小 du -sh ./\.* --exclude='\.' --exclude='\.\.'    (200)find -follow参数如果找对应软连接文件,就对源链接文件。 (201)批量查看某些进程启动的时间 for pid in $(pgrep python); do echo -n "${pid} " ; ps -p ${pid} -o lstart | grep -v "START" ; done|more  
    最新回复(0)