• nohup 命令的使用


    nohup 命令的使用

    1. nohup简介

    nohup 命令运行由 Command参数和任何相关的 Arg参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。

    nohup 是 no hang up 的缩写,就是不挂断的意思。

    nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。

    在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中。

    2. nohup案例介绍

    2.1 后台执行

    nohup : 加在一个命令的最前面,表示不挂断的运行命令

    & : 加载一个命令的最后面,表示这个命令放在后台执行

    #使用nohup命令执行这个脚本
    [look@tomcat ~]$ nohup /bin/sh /home/look/thread.sh > /dev/null 2>&1 &
    [1] 3831
    

    2.2 查看后台运行的命令

    有两个命令可以来查看,psjobs
    区别在于 jobs 只能查看当前终端后台执行的任务,换了终端就看不见了。
    而ps命令适用于查看瞬时进程的动态,可以看到别的终端的任务。

    2.2.1 jobs

    [look@tomcat ~]$ jobs
    [1]   运行中               nohup tail -100f Threads_logs/2020-08-19-threads.log &
    [2]-  运行中               nohup tail -100f Threads_logs/2020-08-19-threads.log > /dev/null 2>&1 &
    [3]+  完成                  nohup /bin/sh /home/look/thread.sh > /dev/null 2>&1
    

    先后起了三个后台运行的进程,使用jobs后都显示出来了。“+”代表最近的一个任务(当前任务),“-”代表之前的任务。

    只有在当前命令行中使用 nohup和& 时,jobs命令才能将它显示出来。如果将他们写到 .sh 脚本中,然后执行脚本,是显示不出来的

    2.2.2 ps命令

    [look@tomcat ~]$ ps -aux|grep tail
    look       3551  0.0  0.0 108092   616 pts/1    S+   14:06   0:00 tail -100f Threads_logs/2020-08-19-threads.log
    look       3870  0.0  0.0 108092   616 pts/0    S    14:43   0:00 tail -100f Threads_logs/2020-08-19-threads.log
    look       3871  0.0  0.0 108092   612 pts/0    S    14:44   0:00 tail -100f Threads_logs/2020-08-19-threads.log
    look       3898  0.0  0.0 112824   980 pts/0    R+   15:01   0:00 grep --color=auto tail
    

    这个是查看进程常用的命令

    a: 显示所有程序
    u: 以用户为主的格式来显示
    x: 显示所有程序,不以终端机来区分

    2.2.3 关闭当前后台运行的程序

    1)kill 命令

    通过jobs命令查看jobnum,然后执行 kill %jobnum

    [look@tomcat ~]$ jobs
    [1]-  运行中               nohup tail -100f Threads_logs/2020-08-19-threads.log &
    [2]+  运行中               nohup tail -100f Threads_logs/2020-08-19-threads.log > /dev/null 2>&1 &
    
    [look@tomcat ~]$ kill %2
    
    [look@tomcat ~]$ jobs
    [1]-  运行中               nohup tail -100f Threads_logs/2020-08-19-threads.log &
    [2]+  已终止               nohup tail -100f Threads_logs/2020-08-19-threads.log > /dev/null 2>&1
    

    通过ps命令查看进程号PID,然后执行 kill %PID

    [look@tomcat ~]$ jobs
    [1]+  运行中               nohup tail -100f Threads_logs/2020-08-19-threads.log &
    [look@tomcat ~]$ kill -9 3870
    [look@tomcat ~]$ jobs
    [1]+  已杀死               nohup tail -100f Threads_logs/2020-08-19-threads.log
    

    2)如果是前台进程的话,直接执行 Ctrl+c 就可以终止了

    2.2.4 前后台进程的切换与控制

    fg命令:将后台中的命令调至前台继续运行
    如果后台中有多个命令,可以先用jobs查看jobnun,然后用 fg %jobnum 将选中的命令调出。

    [look@tomcat ~]$ jobs
    [1]-  运行中               nohup tail -100f Threads_logs/2020-08-19-threads.log &
    [2]+  运行中               nohup tail -100f Threads_logs/2020-08-19-threads.log > /dev/null 2>&1 &
    [look@tomcat ~]$ fg 2
    nohup tail -100f Threads_logs/2020-08-19-threads.log > /dev/null 2>&1
    

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

    [look@tomcat ~]$ fg 2
    nohup tail -100f Threads_logs/2020-08-19-threads.log > /dev/null 2>&1
    ^Z
    [2]+  已停止               nohup tail -100f Threads_logs/2020-08-19-threads.log > /dev/null 2>&1
    
    [look@tomcat ~]$ jobs
    [1]-  运行中               nohup tail -100f Threads_logs/2020-08-19-threads.log &
    [2]+  已停止               nohup tail -100f Threads_logs/2020-08-19-threads.log > /dev/null 2>&1
    

    bg命令:将一个在后台暂停的命令,变成在后台继续执行
    如果后台中有多个命令,可以先用jobs查看jobnum,然后用 bg %jobnum 将选中的命令调出继续执行。

    [look@tomcat ~]$ bg 2
    [2]+ nohup tail -100f Threads_logs/2020-08-19-threads.log > /dev/null 2>&1 &
    
    [look@tomcat ~]$ jobs
    [1]-  运行中               nohup tail -100f Threads_logs/2020-08-19-threads.log &
    [2]+  运行中               nohup tail -100f Threads_logs/2020-08-19-threads.log > /dev/null 2>&1 &
    
  • 相关阅读:
    Windows 8实例教程系列 布局控制
    Windows8/Silverlight/WPF/WP7/HTML5周学习导读(1月7日1月14日)
    Silverlight动态设置WCF服务Endpoint
    轻松搭建Windows8云平台开发环境
    Windows8/Silverlight/WPF/WP7/HTML5周学习导读(1月28日2月3日)
    Windows8/Silverlight/WPF/WP7/HTML5周学习导读(1月1日1月6日)
    Qt 打印已加载可用的数据库驱动
    QSqlDatabase: QOCI driver not loaded
    QT oracle
    参数初始化列表
  • 原文地址:https://www.cnblogs.com/ywb123/p/13531194.html
Copyright © 2020-2023  润新知