• 【Linux】Linux命令行下多任务前后台切换


    原文:https://my.oschina.net/huxuanhui/blog/13844

    我们都知道,在 Windows 上面,我们要么让一个程序作为服务在后台一直运行,要么停止这个服务。而不能让程序在前台后台之间切换。而 Linux 提供了 fg 和 bg 命令,让我们轻松调度正在运行的任务。

    假设你发现前台运行的一个程序需要很长的时间,但是需要干其他的事情,你就可以用 Ctrl-Z ,挂起这个程序,然后可以看到系统提示(方括号中的是作业号):

    [1]+ Stopped /root/bin/rsync.sh然后我们可以把程序调度到后台执行:(bg 后面的数字为作业号)#bg 1
    [1]+ /root/bin/rsync.sh &
    用 jobs 命令查看正在运行的任务:#jobs
    [1]+ Running /root/bin/rsync.sh &
    如果想把它调回到前台运行,可以用#fg 1
    /root/bin/rsync.sh
    这样,你在控制台上就只能等待这个任务完成了。

    fg、bg、jobs、&、ctrl + z都是跟系统任务有关的,虽然现在基本上不怎么需要用到这些命令,但学会了也是很实用的
    一。& 最经常被用到
    这个用在一个命令的最后,可以把这个命令放到后台执行

    二。ctrl + z
    可以将一个正在前台执行的命令放到后台,并且暂停

    三。jobs
    查看当前有多少在后台运行的命令

    四。fg
    将后台中的命令调至前台继续运行
    如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)

    五。bg
    将一个在后台暂停的命令,变成继续执行
    如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)

    六。pgrep

    执行并行任务时抓取后台运行进程的Pid

    七。screen:在连接ssh或者在窗口下执行命令的时候,经常会遇到程序运行太长,可能在管理员要下班之前还无法运行结束,可以使用nohup或者screen命令将持续提交服务器后台运行,这样,下次上班的时候,通过top命令会发现程序在一直运行(使用ssh重新登录时使用ps、jobs命令无法发现我们上次登录所下命令执行的进程)。

    使用screen:

    1.创建会话:最简单的就是直接输入screen回车,一个新会话就完成了(debian下会有提示,再按一次回车就可以了),但偶还是推荐用下面的命令来创建会话:

    screen -S php

    上面命令的意思就是新创建一个名为php的会话,这时你可以继续输入其它命令,如编译php,费时很长,不用管它,喝杯茶先;
    2.离开会话,按住键盘上的ctrl,然后依次按a和d,好了,又回到主会话了,这时你可以继续创建其它会话或者执行其它命令,对我们创建的会话内容没有任何影响,你甚至可以退出会话;
    3.恢复创建的会话:如果还记得会话名称,可以输入命令:

    screen -r php

    上面命令的意思就是恢复名为php的会话,如果你只创建了一个会话,直接如入命令

    screen -r

    就可以恢复了,如果不记得会话名称或者我直接输入screen创建的会话,怎么办呢,那就要用到下面的命令;
    4.查看已经创建的会话:

    screen -ls

    上面的命令的意思就是查看本机已经创建的会话,可以查看会话的名称和id,恢复时可以使用id代替名称;
    5.有时在恢复screen时会出现There is no screen to be resumed matching ****,遇到这种情况咋办呢?输入命令

    screen -D -r ****

    6.退出screen,使用screen会耗费一定的系统资源,所以当screen中的命令执行完毕之后,最好退出screen,直接输入命令

    exit

    就可以退出了。
    7.其它命令

  • 相关阅读:
    Hibernate 与 mybatis 区别
    Struts2 核心流程
    java 面试 -- 4
    无线电日记 2
    ham 无线电笔记
    Our Deepest Fear
    随笔
    GSM学习笔记
    网络时代的悲哀:微软百科全书
    [转载]arm交叉编译器gnueabi、none-eabi、arm-eabi、gnueabihf、gnueabi区别
  • 原文地址:https://www.cnblogs.com/acm-icpcer/p/11221883.html
Copyright © 2020-2023  润新知