进程的挂起及恢复
进程的挂起及恢复
#ctrl+z:挂起,程序放到后台,程序没有结束。
#jobs:查看被挂起的程序工作号
恢复进程执行时,有两种选择:fg命令将挂起的作业放回到前台执行;用bg命令将挂起的作业放到后台执行
格式:fg 工作号;bg 工作号
进程:正在执行的一个程序
程序:是一种写好的代码或脚本
&:后台执行,不占用终端
如:xeyes &
ps命令进程查看命令
ps命令:process status
-e 显示所有进程
-f 全格式
-h 不显示标题
-l 长格式
-w 宽输出
a 显示终端上的所有进程,包括其他用户的进程
r 只显示正在运行的进程
x 显示没有控制终端的进程
最常用三个参数是u、a、x。
#ps axu的输出格式
USER:进程拥有者
PID:进程号
%CPU:占用的CPU使用率
%MEM:占用的内存使用率
VSZ;占用的虚拟内存大小
RSS:占用的内存大小
TTY:终端设备号
STAT:改进程状态
START:进程开始时间
TIME:执行的时间
COMMAND:所执行的指令
D:不可中断的休眠(通常表示该进程正在进行I/O动作)
R:正在执行中
S:休眠状态
T:暂停执行
W:没有足够的内存分页可分配
<:高优先顺序的进程
N:低优先顺序的进程
L:有内存分页分配并锁在内存内(即时系统或定制I/O)
Kill:中断一个处理进程(process)
当中断一个前台进程是通常用ctrl+c;对于后台进程用kill命令
kill命令是通过向进程发送指定的信号来结束的。默认为TERM信号。TERM信号将终止所有不能捕获该信号的进程,对于能捕获该信号的进程需要使用kill –9信号,该信号是不能被捕获的。
kill杀终端,只能可以把终端的shell杀死,而退出终端,但终端不关闭
pkill 命令名 可以直接杀死进程
pkill qmail //直接杀死qmail程序进程
from : http://blog.sina.com.cn/s/blog_4d027b0001008n7d.html
=================================================
=================================================
=================================================
kill -STOP PID
kill -CONT PID
kill -CONT PID
SIGTSTP & SIGCONT
fork() 一个子进程,然后从父进程发送一个信号给它,测试父子进程之间的信号通讯。测试代码:
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <signal.h>
#include <stdlib.h>
void handler(int signo)
{
printf("recv the signal from parent process\n");
}
int main()
{
pid_t pid;
pid = fork();
switch(pid)
{
case -1:
perror("fork failed");
exit(1);
case 0:
printf("in the child\n");
signal(SIGCONT, handler);
pause();
printf("child weakup\n");
break;
default:
printf("in the parent\n");
sleep(5);
kill(pid, SIGCONT);
sleep(5);
printf("parent weakup\n");
break;
}
printf("bye..\n");
exit(0);
}
#include <sys/types.h>
#include <unistd.h>
#include <signal.h>
#include <stdlib.h>
void handler(int signo)
{
printf("recv the signal from parent process\n");
}
int main()
{
pid_t pid;
pid = fork();
switch(pid)
{
case -1:
perror("fork failed");
exit(1);
case 0:
printf("in the child\n");
signal(SIGCONT, handler);
pause();
printf("child weakup\n");
break;
default:
printf("in the parent\n");
sleep(5);
kill(pid, SIGCONT);
sleep(5);
printf("parent weakup\n");
break;
}
printf("bye..\n");
exit(0);
}
from: http://www.groad.net/bbs/read.php?tid=936