• Linux的bg和fg和jobs和nohup命令简单介绍


    我们都知道,在 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)

    Linux 命令放入后台的方法有两种,分别介绍如下。

    "命令 &",把命令放入后台执行

    第一种把命令放入后台的方法是在命令后面加入 空格 &。使用这种方法放入后台的命令,在后台处于执行状态。

    注意,放入后台执行的命令不能与前台有交互,否则这个命令是不能在后台执行的。例如:

    [root@localhost ~]#find / -name install.log &
    [1] 1920
    #[工作号] 进程号
    #把find命令放入后台执行,每个后台命令会被分配一个工作号。命令既然可以执行,就会有进程产生,所以也会有进程号

    这样,虽然 find 命令在执行,但在当前终端仍然可以执行其他操作。如果在终端上出现如下信息:

    [1]+ Done find / -name install.log

    则证明后台的这个命令已经完成了。当然,命令如果有执行结果,则也会显示到操作终端上。其中,[1] 是这个命令的工作号,"+"代表这个命令是最近一个被放入后台的。

    命令执行过裎中按 Ctrl+Z 快捷键,命令在后台处于暂停状态

    使用这种方法放入后台的命令,就算不和前台有交互,能在后台执行,也处于暂停状态,因为 Ctrl+Z 快捷键就是暂停的快捷键。

    【例 1】

    [root@localhost ~]#top
    #在top命令执行的过程中,按下Ctrl+Z快捷键
    [1]+ Stopped top
    #top命令被放入后台,工作号是1,状态是暂停。而且,虽然top命令没有结束,但也能取得控制台权限


    【例 2】

    [root@localhost ~]# tar -zcf etc.tar.gz /etc
    #压缩一下/etc/目录
    tar:从成员名中删除开头的"/"
    tar:从硬链接目标中删除开头的"/"
    ^Z
    #在执行过程中,按下Ctrl+Z快捷键
    [2]+ Stopped tar-zcf etc.tar.gz/etc
    #tar命令被放入后台,工作号是2,状态是暂停

    每个被放入后台的命令都会被分配一个工作号。第一个被放入后台的命令,工作号是 1;第二个被放入后台的命令,工作号是 2,以此类推。

  • 相关阅读:
    java攻城狮之路(Android篇)--widget_webview_metadata_popupwindow_tabhost_分页加载数据_菜单
    java攻城狮之路(Android篇)--MP3 MP4、拍照、国际化、样式主题、图片移动和缩放
    java攻城狮之路(Android篇)--BroadcastReceiver&Service
    内存调试的东西D/dalvikvm( 809 ): GC_CONCURRENT freed
    java攻城狮之路(Android篇)--Activity生命
    java攻城狮之路(Android篇)--与服务器交互
    java实例练习
    java攻城狮之路(Android篇)--ListView与ContentProvider
    java攻城狮之路(Android篇)--SQLite
    Android中使用自身携带的Junit新建一个测试工程
  • 原文地址:https://www.cnblogs.com/keystone/p/12525636.html
Copyright © 2020-2023  润新知