• 工作管理 (job control)


    这个工作管理 (job control) 是用在 bash 环境下的,也就是说:『当我们登入系统取得创建的 bash shell 进程之后,在该bush下同时进行多个工作的行为管理 』。 而所有创建的工作都是目前 bash 的子进程。

    要进行 bash job control 必须要注意到的限制是:

    • 这些工作所触发的进程必须是你 shell 的子进程(只管理自己的 bash)
    • 前台:在bash前台运行的工作 (foreground)
    • 后台:在后台自行运作的工作,可使用 bg/fg 呼出该工作;
    • 后台中『执行』的进程无法和用户交互

    常用命令

      直接将指令丢到后台中『执行』的 &

      将『目前』的工作丢到后台中『暂停』: [ctrl]-z

      观察目前的后台工作状态: jobs -l

      将后台工作拿到前景来处理: fg %jobnumber

      让工作在后台下的状态变成运作中: bg %jobnumber

      关闭后台中的工作: kill -9 %jobnumber

    脱机管理问题

       如果你是以远程联机方式连接到你的 Linux 主机,并且将工作以 & 的方式放到后台去,在工作尚未结束的情况下你脱机了,该工作会被中断掉。

      可以尝试使用 nohup 这个指令来处理喔!这个 nohup 可以让你在脱机或注销系统后,还能够让工作继续进行(nohup 并不支持 bash 内建的指令 )。语法:

    [root@study ~]# nohup [指令与参数] & 

      例:  

    # 1. 先编辑一支会『睡着 500 秒』的程序:
    [root@study ~]# vim sleep500.sh
    #!/bin/bash
    /bin/sleep 500s
    /bin/echo "I have slept 500 seconds."
    # 2. 丢到后台中去执行,并且立刻注销系统:
    [root@study ~]# chmod a+x sleep500.sh
    [root@study ~]# nohup ./sleep500.sh &
    [2] 14812
    [root@study ~]# nohup: ignoring input and appending output to `nohup.out'          #会告知这个讯息!
    [root@study ~]# exit

    如果你再次登入的话,再使用 pstree 去查阅你的进程,会发现 sleep500.sh 还在执行中!并不会被中断掉!  nohup后的指令不会绑定到终端机, 脚本的输出会被导向『~/nohup.out

  • 相关阅读:
    PHPLIB Template入门系列 4 模板嵌套
    jQuery 实例
    建立PHP的本地调试环境
    PHP缓存memcache简单应用
    PHP程序:虚拟域名服务DIY
    去掉网络共享的session
    C# 里EF 对Mysql DB更新,乱码
    sshd的log的位置
    cURL 访问https失败
    Eclipse中编辑properties文件的编码问题
  • 原文地址:https://www.cnblogs.com/jimboi/p/8540266.html
Copyright © 2020-2023  润新知