进程的挂起及恢复


#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

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);
    }