美文网首页
2018-03-02 Linux 进程的前后台切换

2018-03-02 Linux 进程的前后台切换

作者: heyzqq | 来源:发表于2018-03-02 18:21 被阅读0次

    因为用串口连接开发板,本来可以用网线连接起来,然后 ssh 登录的,但是为了进行 gsm 模块的网络测试,拔了网线就不太方便了,所以就找了一个方法,方便在一个窗口内执行多个任务。

    说白了,这个方法就是用几个命令和常用的操作结合起来的。

    1.1 后台执行 -- &

    在命令后面空格加上 & 符号,就可以让命令后台执行了,执行之后会返回一个 序号+pid(不通系统有区别),多开后台的话一般从 1 自增:

    [root@ ~]# find / -iname okjj &
    [1] 7124
    [root@ ~]# 
    

    1.2 Ctrl+Z 后台(进程暂停)

    如果此时进程正在运行,可以直接 Ctrl+Z 将进程挂起:

    [root@ ~]# ping baidu.com
    PING baidu.com (123.125.114.144) 56(84) bytes of data.
    64 bytes from 123.125.114.144: icmp_seq=1 ttl=49 time=43.2 ms
    64 bytes from 123.125.114.144: icmp_seq=2 ttl=49 time=43.1 ms
    64 bytes from 123.125.114.144: icmp_seq=3 ttl=49 time=43.0 ms
    ^Z
    [1]+  已停止               ping baidu.com
    [root@ ~]# 
    

    2 列出所有后台进程 -- jobs

    当你有太多的后台进程,但忘记了他们的序号,可以利用命令 jobs 列出所有后台进程(只列出用户置与后台的进程):

    [root@ ~]# jobs
    [1]+  已停止               ping baidu.com
    

    3 使后台的挂起进程继续运行 -- bg

    如果你是用 Ctrl+Z 将进程转移到后台,进程会暂停,这时只要利用 bg %num 就可以把序号为num的进程继续运行起来:

    [root@ ~]# bg %1
    [1]+ ping baidu.com &
    [root@ ~]# 64 bytes from 123.125.114.144: icmp_seq=4 ttl=49 time=43.3 ms
    64 bytes from 123.125.114.144: icmp_seq=5 ttl=49 time=43.1 ms
    

    4 将后台进程转到前台运行 -- fg

    利用命令 fg 可以把后台命令转到前台运行,并且以挂起的进程会继续运行:

    [root@ ~]# fg %1
    ping baidu.com
    64 bytes from 123.125.114.144: icmp_seq=6 ttl=49 time=43.2 ms
    64 bytes from 123.125.114.144: icmp_seq=7 ttl=49 time=43.3 ms
    

    5 结束进程

    如果你想结束某个进程,可以将其转为前台再操作,或者直接 kill 掉就行了。


    6 ps 进程状态

    ps 可以列出进程的状态,当进程被后台挂起时,它的状态是 T.

    ps aux 或 lax 输出的解释:

    USER 进程的属主;
    PID 进程的ID;
    PPID 父进程;
    %CPU 进程占用的CPU百分比;
    %MEM 占用内存的百分比;
    NI 进程的NICE值,数值大,表示较少占用CPU时间;
    VSZ 进程虚拟大小;
    RSS 驻留中页的数量;
    TTY 终端ID
    

    STAT 进程状态(有以下几种):

    D 无法中断的休眠状态(通常 IO 的进程);
    R 正在运行可中在队列中可过行的;
    S 处于休眠状态;
    T 停止或被追踪;
    W 进入内存交换(从内核2.6开始无效);
    X 死掉的进程(从来没见过);
    Z 僵尸进程;
    

    刚才的 ping 命令, T 就代表是挂起的程序,没有在运行:

    [root@ ~]# ps aux | grep ping
    root      12514  0.0  0.0  14948  1832 pts/30   T    18:02   0:00 ping baidu.com
    

    在利用 & 后台运行一个,S 其实在这里不能说是休眠,只是在后台运行:

    [root@ ~]# ping csdn.net &
    [2] 13150
    
    一堆的ping输出....
    
    [root@ ~]# ps aux | grep ping
    root      12514  0.0  0.0  14948  1832 pts/30   T    18:02   0:00 ping baidu.com
    root      13150  0.0  0.0  14948  1824 pts/30   S    18:05   0:00 ping csdn.net
    

    相关文章

      网友评论

          本文标题:2018-03-02 Linux 进程的前后台切换

          本文链接:https://www.haomeiwen.com/subject/tfxzxftx.html