1、ps命令使用
- ps -aux
USER | 进程的用户; |
PID | 进程的ID; |
%CPU | 进程占用的CPU百分比; |
%MEM | 占用内存的百分比; |
VSZ | 该进程使用的虚拟内存量(KB); |
RSS | 该进程占用的固定内存量(KB); |
TTY | 该进程在哪个终端上运行(登陆者的终端位置),若与终端无关,则显示(?)。若为pts/0等,则表示由网络连接主机进程; |
STAT | 进程状态 |
START | 该进程被触发启动时间; |
TIME | 该进程实际使用CPU运行的时间; |
COMMAND | 命令的名称和参数; |
STAT状态位常见的状态字符
D | 无法中断的休眠状态(通常的进程); |
R | 正在运行可中在队列中可过行的; |
S | 处于休眠状态; |
T | 停止或被追踪; |
W | 进入内存交换(从内核2.6开始无效); |
X | 死掉的进程(基本很少见); |
Z | 僵尸进程; |
< | 优先级高的进程; |
N | 优先级较低的进程; |
L | 有些页被锁进内存; |
s | 进程的领导者(在它之下有子进程); |
l | 多进程的(使用CLONE_THREAD,类似NPTLpthreads); |
+ | 位于后台的进程组; |
2、top命令使用其它详细使用参考链接: http://www.cnblogs.com/peida/archive/2012/12/19/2824418.html
- top -p pid
- 进程的状态、cpu、内存等
PID | 进程的ID |
USER | 进程所有者 |
PR | 进程的优先级别,越小越优先被执行 |
NInice | 值 |
VIRT | 进程占用的虚拟内存 (KB) |
RES | 进程占用的物理内存 (KB) |
SHR | 进程使用的共享内存 (KB) |
S | 进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数 |
%CPU | 进程占用CPU的使用率 |
%MEM | 进程使用的物理内存和总内存的百分比 |
TIME+ | 该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。 |
COMMAND | 进程启动命令名称 |
参考文献: https://www.cnblogs.com/gaojun/p/3406096.html
3、进程监控(一)
ps -aux | grep "test.py" | grep -v grep &> /dev/null
if [ $? -ne 0 ] #检测pgrep命令执行的状态码
then
echo "`date` test service is stopped. Now it will be restarted." >> test.log
python test.py > out.txt 2>&1 &
else
echo "`date` test service is running" >> test.log
fi
- grep -v grep 过滤掉grep进程本身
eg: tester 10192 0.0 0.1 3328 876 pts/0 S+ 12:41 0:00 grep --color=auto init
- 有些进程状态已经stop就没法检测,其实代码已经不跑了
4、进程监控(二)
ps -aux | grep test | grep -v grep | tr -s ' '| cut -d ' ' -f 8 | grep -E 'R|S'
if [ $? -ne 0 ] #检测pgrep命令执行的状态码
then
echo "`date` test service is stopped. Now it will be restarted." >> test.log
pid_str=ps -aux | grep test | grep -v grep | tr -s ' '| cut -d ' ' -f 2
if [ ${#pid_str} -ne 0 ]
ps -ef | grep test | grep -v grep |cut -c 9-15 | xargs kill -9
fi
python test.py > out.txt 2>&1 &
else
echo "`date` test service is running" >> test.log
fi
- 监控进程的状态是否在运行,判断是否要重启