• Linux Guard Service


    把一个正在执行的程序放入后台

    [root@localhost 01]# Ctrl+Z
    

    此使程序被移动到后台,但不能继续输出(处于暂停态)

    [root@localhost 01]# ./test1-1 
    1552227
    1552227
    1552227
    1552227
    ^Z
    [1]+  已停止                  ./test1-1
    [root@localhost 01]# 
    [root@localhost 01]# 
    [root@localhost 01]# jobs
    [1]+  已停止                  ./test1-1
    

    让该后台程序继续在后台运行

    [root@localhost 01]# bg %1
    [1]+ ./test1-1 &
    1552227
    [root@localhost 01]# 1552227
    1552227
    1552227
    ^C
    

    列出后台程序列表

    [root@localhost 01]# jobs
    

    显示已经进入后台的程序列表

    [root@localhost 01]# jobs
    [1]   已停止                  ./test1-1
    [2]-  已停止                  ./test1-1
    [3]+  已停止                  man jobs
    

    其中+是倒数第一个后台进程,-是倒数第二个后台进程,前方是后台进程的序号

    [root@localhost 01]# jobs
    [1]-  已停止                  ./test1-1
    [2]+  已停止                  ./test1-2
    

    将某个特定后台程序切换到前台

    [root@localhost 01]# fg %n
    

    其中n是jobs列表中的后台进程序号

    [root@localhost 01]# fg %1
    ./test1-1
    1552227
    1552227
    

    查看父进程标识

    [root@localhost 01]# ps f
       PID TTY      STAT   TIME COMMAND
     49561 pts/1    Ss     0:00 -bash
     49959 pts/1    T      0:00  \_ ./test1-1
     49960 pts/1    T      0:00  \_ ./test1-2
     49962 pts/1    R+     0:00  \_ ps f
      2496 tty1     Ss+    0:00 -bash
    

    使用ps f以树形显示所有进程可以查看到test1-1 test1-2的父进程都是-bash

    在新终端查看进程标识

    [root@localhost ~]# ps f
       PID TTY      STAT   TIME COMMAND
     50060 pts/3    Ss     0:00 -bash
     50093 pts/3    R+     0:00  \_ ps f
     50010 pts/2    Ss+    0:00 -bash
     49561 pts/1    Ss+    0:00 -bash
     49959 pts/1    T      0:00  \_ ./test1-1
     49960 pts/1    T      0:00  \_ ./test1-2
      2496 tty1     Ss+    0:00 -bash
    

    在新终端打开后test1-1和test1-2的父进程是pts/1 的-bash也就是旧终端,新终端的-bash是pts/3,此使用jobs没有test1-1和test1-2了

    按Ctrl+D时登出终端

    [root@localhost 01]# 登出
    

    显示有停止的任务,再使用ps -ef查看列表,后台任务依然存在
    再按一次Ctrl+D,终端已经登出,切换到另一个终端查看

    Last login: Sun Oct 15 18:26:48 2017 from 192.168.80.1
    [root@localhost ~]# ps -ef | grep test
    root      49959      1  0 18:27 ?        00:00:00 ./test1-1
    
    该进程被init进程收养后继续运行,称孤儿进程

    直接把程序放到后台执行 &

    [root@localhost 01]# ./test1-1 &
    

    此使程序会自动在后台继续运行,并进行输出

    [root@localhost 01]# ./test1-1 &
    [1] 49856
    [root@localhost 01]# 1552227
    1552227
    

    保持后台程序在终端结束后依然存在

    使用守护进程让进程不以终端为父进程

    daemon(0,0);
    

    ps -ef 中的状态含义

    D    不可中断     Uninterruptible sleep (usually IO)
    R    正在运行,或在队列中的进程
    S    处于休眠状态
    T    停止或被追踪
    Z    僵尸进程
    W    进入内存交换(从内核2.6开始无效)
    X    死掉的进程
    
    
    <    高优先级
    N    低优先级
    L    有些页被锁进内存
    s    包含子进程
    +    位于后台的进程组;
    l    多线程,克隆线程  multi-threaded (using CLONE_THREAD, like NPTL pthreads do)
  • 相关阅读:
    Milk Patterns POJ
    Musical Theme POJ
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    runloop
    OC -网络请求
  • 原文地址:https://www.cnblogs.com/liutianchen/p/8503528.html
Copyright © 2020-2023  润新知