zoukankan      html  css  js  c++  java
  • 进程的挂起及恢复

    进程的挂起及恢复

    #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);
        }
     from: http://www.groad.net/bbs/read.php?tid=936

  • 相关阅读:
    RobotFrameWork中使用Chrome浏览器
    vim使用手册
    执行sudo supervisorctl reload报错ImportError: No module named supervisor.supervisord
    博客园批量发闪存,获取小星星
    python + selenium + unittest实现简单的UI自动化
    java + selenium + testng实现简单的UI自动化
    读《你的知识需要管理》(整理)
    python:实现几种排序算法
    python:求整数的二进制表示
    老张烧开水的故事(故事来源网络)
  • 原文地址:https://www.cnblogs.com/no7dw/p/2077968.html
Copyright © 2011-2022 走看看