• Bash的作业控制


    作业控制是bash Shell提供的一项强大功能,它允许你选择在前台还是后台运行程序,即作业。

    1、开启bash的作业控制功能

    #set -o monitor

    #set -m

    2、显示在后台运行的作业

    #jobs
    [1]- 运行中 gedit &
    [2]+ 运行中 sleep 1000 &
    +代表最后放到后台运行的作业
    -代表倒数第二个放到后台运行的作业

    #jobs -l                      //会显示PID
    [1]- 3403 运行中 gedit &
    [2]+ 3408 运行中 sleep 1000 &

    #jobs %%               //显示在作业表中最近执行的命令
    [2]+ 运行中 sleep 1000 &

    #jobs -r                    //列出所有正在运行的作业

    #jobs -s                     //列出所有挂起(暂停执行)的作业

    3、作业控制:fg和bg命令

    # gedit &                  //将作业丢到后台执行
    [1] 15465

    #fg %1                       //将作业放到前台执行
    gedit

    ^Z //将前台作业送后台,并挂起(暂停执行),显示提示符

    #bg %1                          //启动后台停止的作业1

    #kill %1                        //杀掉作业1
    #kill -9 %1                   //强制杀掉作业1
    kill常用信号:
    -1 :重新读取一次参数的配置文件 (类似 reload);
    -2 :代表和由键盘输入 [ctrl]-c 同样的动作;
    -9 :立刻强制删除一个工作;
    -15:以正常的程序方式终止一顷工作。与-9 是不一样的。

    #disown %1                    //将作业1从从作业表中移除,shell不会将其识别为可用的作业(成为一个正常的进程,ps能查看)

    4、终端后台和系统后台

    在终端模式下,通过& 或 ^Z放到后台的作业都是放到终端的后台,而不是系统后台。当后台任务未执行完,而终端退出时(exit),终端后台的任务会终止。
    系统后台的任务则不会随着终端的退出而终止,与终端无关。
    可以通过at命令或nohup命令将作业放到系统后台执行,当退出终端或注销系统后,程序还能够工作继续运行。
    通过nohup运行的程序的输出,都重定向到~/nohup.out文件中。
    nohup不支持Bash内建命令,只支持外部程序。

    #nohup cmd
    #nohup cmd & 

    =-=-=-=-=
    Powered by Blogilo

  • 相关阅读:
    Callable和Future 多线程
    【spring-boot】spring-boot 整合 ehcache 实现缓存机制
    java 设计模式http://www.runoob.com/design-pattern/design-pattern-tutorial.html
    DDD领域驱动设计(例子)
    js要怎么接收后端传的excel文件流?
    构建最小JDK Docker镜像 或者直接使用镜像:frolvlad/alpine-oraclejre8:slim
    JVM知识点总结
    DDD随笔-Axon
    HttpServletRequest  通用的post 请求
    List转数组
  • 原文地址:https://www.cnblogs.com/pandachen/p/4693520.html
Copyright © 2020-2023  润新知