• 后台不中断运行脚本


    test.sh

    #!/bin/bash
    while((1));do
      echo `date '+%Y-%m-%d %H:%M:%S'`
      sleep 1
    done
    

    后台运行脚本

    1. 执行脚本 ./test.sh,中断脚本 ctrl + c, 切到后台并暂停 ctrl + z

    2. 后台暂停的脚本状态是 stopped,使用 bg number 让其在后台开始运行(number由jobs命令查询到的[]中的数字,不是pid)

    3. 直接在后台运行:./test.sh &

    4. 查看当前shell环境中已启动的任务情况:jobs

    5. 将 test.sh 切换到前台运行:fg %number

    6. 中断后台运行的脚本,先 fg %number 切换到前台,再 ctrl + c,或是直接 kill %number

    后台不中断运行脚本

    1. 后台不中断运行:nohub ./test.sh &, 打印信息输出在当前目录的 nohup.out 中

    2. 在当前终端使用 jobs 可看到 test.sh 处于 running 状态

    3. 使用 ps -ef | grep test.sh 可看到正在运行的 test.sh 脚本进程

    4. 在后台不中断运行 test.sh,可使用 nohup 忽略 hangup 信号,或使用 setsid 将其父进程改为 init 进程

    后台不中断运行脚本的另一个命令:setsid .test.sh &ps -ef | grep test.sh 可看到 test.sh 父进程 id 为1 (user名为 kernoops,kill该进程需要root权限)

    当父进程退出时,会发送 hangup 信号给所有子进程,子进程收到hangup信号后也会退出,所以要想退出当前shell终端时 test.sh 继续运行,则需要使用 nohup 来忽略 hangup 信号。

  • 相关阅读:
    Oracle 删除某个用户下的所有对象,执行需谨慎
    ORACLE常用性能监控SQL
    mysql千万级大数据SQL查询优化
    qt小例子:实现阿里云物联网设备登录信息计算器
    mqtt协议
    亚马逊物联网平台c-sdk的使用
    esp32-cam开发环境搭建
    qt小例子:实现选值框和滑块同步变化
    在qt5中使用qtmqtt库
    将short类型转换为char类型
  • 原文地址:https://www.cnblogs.com/hencins/p/14245146.html
Copyright © 2020-2023  润新知