zoukankan      html  css  js  c++  java
  • 【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.其它命令

  • 相关阅读:
    hdu 4002 Find the maximum
    hdu 2837 坑题。
    hdu 3123
    zoj Treasure Hunt IV
    hdu 2053 Switch Game 水题一枚,鉴定完毕
    poj 1430 Binary Stirling Numbers
    hdu 3037 Saving Beans
    hdu 3944 dp?
    南阳oj 求N!的二进制表示最低位的1的位置(从右向左数)。
    fzu 2171 防守阵地 II
  • 原文地址:https://www.cnblogs.com/acm-icpcer/p/11221883.html
Copyright © 2011-2022 走看看