zoukankan      html  css  js  c++  java
  • Linux后台执行的方法

    =============================================================================================
    nohup command > myout.file 2>&1 &

    命令解析:

        使用nohup命令后台运行命令之后,需要使用exit正常退出当前账户,这样才能保证命令一直在后台运行。
        command>out.file是将command的输出重定向到out.file文件,即输出内容不打印到屏幕上,而是输出到out.file文件中。
        2>&1 是将标准出错重定向到标准输出,这里的标准输出已经重定向到了out.file文件,即将标准出错也输出到out.file文件中。
        最后一个&, 是让该命令在后台执行。

        ctrl + z
        可以将一个正在前台执行的命令放到后台,并且处于暂停状态。

        Ctrl+c
        终止前台命令。

        jobs
        查看当前有多少在后台运行的命令。
        jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated。但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识。

           注意:当前用户退出后再次登录,无法通过jobs查询后台任务,需要使用PS才可以找到。被坑了,MARK下。

        tail -100f out.file

           可以监控日志文件

    =============================================================================================

    难免会遇到在Linux,后台执行任务。下面,总结了一下关闭窗口任然在后台执行的方法,例如

        #执行一个打包命令
        tar czf /data/backup.tgz /data/backup

    1. 采用&

        tar czf /data/backup.tgz /data/backup &
        ctrl+d #退出 才可以,如果直接关闭窗口,进程任然会被关闭

    2. 采用nohup

        nohup tar czf /data/backup.tgz /data/backup
        ctrl+z #挂起到后台
        bg #后台执行  可以先通过jobs 查看当前有多少job
        ctrl+d  #或者 关闭窗口  进程任然会在后台执行

    3.采用nohup + &

        nohup tar czf /data/backup.tgz /data/backup &
        ctrl+d  或者 关闭窗口  进程任然会在后台执行

    4.采用(command &)

        (tar czf /data/backup.tgz /data/backup &)   #会将ppid设置为1,而非当前会话的id,并且jobs查看不到当前的作业。注意这里的括号即是这个方法的重点。
        ctrl+d  #或者 关闭窗口  进程任然会在后台执行

    5.采用setid run a program in a new session

        setid tar czf /data/backup.tgz /data/backup #会将ppid设置为1,而非当前会话的id
        ctrl+d  #或者 关闭窗口  进程任然会在后台执行

    6.采用disown

        tar czf /data/backup.tgz /data/backup
        ctrl+z
        jobs 
        bg %N
        disown -h %N #N即为job的id  disown 可以配合 &使用,效果更好,因为 CTRL-z 的用途就是将当前进程挂起(Suspend),然后我们就可以用jobs命令来查询它的作业号,再用bg jobspec来将它放入后台并继续运行。需要注意的是,如果挂起会影响当前进程的运行结果,请慎用此方法。
        disown -rh -a xxx  #-a所有 -r所有 -h忽略hup

    7.采用screen

        screen
        tar czf /data/backup.tgz /data/backup
        ctrl+a d    #不可以直接ctrl+d 这样会ternimate screen

    用screen -dmS session name来建立一个处于断开模式下的会话(并指定其会话名)。
    用screen -list 来列出所有会话。
    用screen -r session name来重新连接指定会话。 screen -x session_name(id) 连接attached会话
    用快捷键CTRL-a d 来暂时断开当前会话。

  • 相关阅读:
    Linux安装.net core
    在IIS中如何配置SSL(https)
    Lambda的前世今生
    Java建造者模式
    leetcode 83 Remove Duplicates from Sorted List
    【设计】Office
    【设计】简书品牌重构
    【设计总结】
    【交互设计】
    【设计总结】
  • 原文地址:https://www.cnblogs.com/renpei/p/9385258.html
Copyright © 2011-2022 走看看