测试常用linux命令1
进程相关:
1,查看所有进程(包含历史进程):
ps -ef 各个参数的含义依次是uid,pid,ppid,c(cpu利用率),stime(进程启动时间),tty,time,cmd
2,动态查看进程top
top命令的详细用法可以参见:
http://www.2cto.com/os/201209/157960.html
注意命令中的相关字段:
对于cpu,分为us(用户空间占用cpu百分比);sy(系统空间占用cpu百分比);id(空闲cpu百分比);wa(IO等待占用cpu百分比)
其中的各个字段:PID(进行id);USER(进程所有者);PR(进程优先级); VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR 共享内存大小,单位kb
S 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU 上次更新到现在的CPU时间占用百分比
%MEM 进程使用的物理内存百分比
3, 后台运行进程
前台运行有:. ,sh,source
后台运行进程:再命令后面加一个&,不过这种方法,如果会话退出,那么后台进程也随之退出
如果需要会话退出的时候,进程不退出,那么方法是nohup。例如nohup ./test &。需要注意,nohup会从终端解除进程的关联,丢掉到stdout和stderror链接,而是将这两部分消息都重定向到nohup.out文件中
定时运行 at(预设时间运行) ,cron(定期运行);
开机或用户启动时运行:.bash_profile,bashrc文件位于用户主目录,前者在用户每次登录时运行,后者在每个shell启动时运行
4,结束进程:
重温linux信号量,常用的有SIGHUP(挂起进程),SIGINT(终止进程),SIGKILL(无条件终止进程),SIFTSTP(暂停进程,但并不终止)
a) ctrl+c:产生SIGHUP信号,发送给shell中当前运行的进程
b) ctrl+z:生成一个SIGTSTP信号,暂停进程,不过该进程继续保留在内存中,能从上次停止的地方继续运行。
如果想要进一步终止,可以用ps au(STAT字段为S代表被停止或追踪),也可以使用jobs查看后台进程,之后再用kill命令杀死
如果恢复可以用bg,fg等命令。
c)kill/killall 发出SIFKILL信号,无条件终止进程,killall可以直接使用进程名字,并可以使用通配符
2,网络命令
查看本机ip hostname -i
查看远程机器ip : ping (机器名称),host等等
查看进程占用的端口号
[root@nbatest ~]# netstat -anp | grep 进程名称
netstat -anp
查看使用端口号的进程
lsof
[root@nbatest ~]# lsof -i: 端口号
3,监测磁盘空间
df -h(用户可读的形式):显示某个设备还有多少磁盘空间
du -sh :显示特定目录下的磁盘使用情况
4,流程控制语句(if依据的是命令回传码$0,而不是其他语言中常见的true或者false,只不过利用test或者中括号进行判断的时候,类似于达到了true或者false的效果)
if then fi(then不能省略)
其中的条件判断分为三类:数值判断,字符串判断,文件判断(test,[]两种方式,推荐使用后者)
数值判断:-eq,-gt,-lt,-ne,-ge,-le
字符串判断: =,!=,<,>,-n(长度是否非0),-z(长度是否为0);注意大小写符号必须使用\进行转义,否则会被当成重定向命令
文件判断:-d,-f,-e,-s(判断文件是否存在且非空),-nt,-ot
if双尖括号(())中可以放置数学表达式;[[]]可以进行正则匹配
普通的数学运算也可以放置在$[]中
${}不能放置$,需要将$符号换成!号
由此得到遍历命令行参数的两种方法:
for arg in $@ do echo $arg done #方法2 for((i=1;i<=$#;i++)) do echo ${!i} done
6, vim缩进格式化 gg=G
8,目录覆盖
cp -r ./test/* ./test/
9,nohup 用户退出,进程依旧执行
10, ls | xargs wc -l 是将显示的文件名作为wc -l的参数执行,目录下有多少个文件就执行多少次
ls | xargs -i mv {} {}.bak 将目录下的所有文件都重命名为xxxx.bak
11,找到某个程序存放目录,包括bin,source,etc等 where is mysq
12, 垃圾桶黑洞 /dev/null
将错误信息忽略 find /home -name .bashrc 2> /dev/null
将标准输出和错误输出到同一个文件中
ls . &>list 或者 ls . >list 2 >&1
13, 命令运行的判断依据 &?(命令回传值)与&&或||
&?命令回传值,&&正确则执行,否则不执行。||与之相反
cmd1&&cmd2||cmd3正确执行2,否则执行3
关于命令行的参数:
1,$#代表参数个数;$0代表脚本命令(`basename $0`);$1...代表各个参数,如果脚本需要多于9个参数,需要稍微修改一下变量名,如${10};$*将所有的参数作为一个单词保存,然而$@则是作为不同的单词。选取最后一个参数,需要用${!#}而不是${$#}
2,shift可以用来移动变量,利用它某种程度可以实现可变参数,但要注意一个参数被移除之后,它的值就会被丢掉而且无法恢复。某些时候可以用来分离参数和选项。(不过更常用的是使用getopt方法)