• 工作管理 (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

  • 相关阅读:
    SpringBoot配置文件数据格式三种写法
    实施工程师
    Linux命令大全
    PDCA原则
    cmd命令下载maven管理需要的依赖jar包
    java集合体系结构总结
    回溯
    红黑树详解
    Java 垃圾回收算法
    MySQL优化:如何避免回表查询?什么是索引覆盖
  • 原文地址:https://www.cnblogs.com/jimboi/p/8540266.html
Copyright © 2020-2023  润新知