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 &

nohup 命令的使用的更多相关文章

  1. linux–nohup命令(转)

    在应用Unix/Linux时,我们一般想让某个程序在后台运行,于是我们将常会用 & 在程序结尾来让程序自动运行.比如我们要运行mysql在后台: /usr/local/mysql/bin/my ...

  2. 菜鸟学Linux命令:nohup命令启动程序

    在UNIX/LINUX中,普通进程用&符号放到后台运行,如果启动该程序的控制台logout,则该进程随即终止. 要实现守护进程,一种方法是按守护进程的规则去编程,比较麻烦:另一种方法是仍然用普 ...

  3. nohup命令浅析

    要将一个命令放到后台执行,我们一般使用nohup sh command & &都知道是放到后台执行这个命令,那么nohup是做什么的? 这就要从unix的信号说起,unix的信号机制可 ...

  4. Linux_解决nohup命令生成的多余的大日志文件

    解决nohup命令生成的多余的大日志文件 经常使用命令 nohup /usr/bin/php /srv/www/update.php & 可以让它在后台安静的进行,但是有一个烦恼就是,它会生成 ...

  5. linux 后台运行命令 nohup命令

    转载:http://if.ustc.edu.cn/~ygwu/blog/archives/000538.html 2005年04月18日 简单而有用的nohup命令在UNIX/LINUX中,普通进程用 ...

  6. Linux基础知识之—— nohup命令使程序在后台运行的方法

    在linux操作系统中从后台一直运行某个程序的方法,就是使用nohup命令了. 参照网址:http://www.jb51.net/LINUXjishu/189964.html

  7. linux的nohup命令的用法

    在应用Unix/Linux时,我们一般想让某个程序在后台运行,于是我们将常会用 & 在程序结尾来让程序自动运行.比如我们要运行mysql在后台: /usr/local/mysql/bin/my ...

  8. LINUX nohup命令输入输出深浅进出

    无论是否将 nohup命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中.如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中 ...

  9. 实用技巧:简单而有用的nohup命令介绍(转)

    简单而有用的nohup命令在UNIX/LINUX中,普通进程用&符号放到后台运行,如果启动该程序的控制台logout,则该进程随即终止. 要实现守护进程,一种方法是按守护进程的规则去编程(本站 ...

  10. Linux nohup命令详解

    nohup命令及其输出文件                                                                                       ...

随机推荐

  1. web自动化 -- HTMLreport(三)测试报告输出log日志

    一.需求痛点 1.HTMLreport没法看到log日志,经过封装的框架不可能走一步就print() 2. 希望可以在HTMLreport中输出log日志 3.痛点截图 二.解决办法 1.既然是HTM ...

  2. 06 . ELK Stack + kafka集群

    简介 Filebeat用于收集本地文件的日志数据. 它作为服务器上的代理安装,Filebeat监视日志目录或特定的日志文件,尾部文件,并将它们转发到Elasticsearch或Logstash进行索引 ...

  3. IO—》Properties类&序列化流与反序列化流

    Properties类 介绍:Properties 类表示了一个持久的属性集.Properties 可保存在流中或从流中加载.属性列表中每个键及其对应值都是一个字符串. Properties类特点: ...

  4. Django开发之Datetime类型JSON序列化时报错

    前提回顾 在进行django开发view视图时,如果数据库字段是 datetime类型,在JSON序列化返回时,会出现异常 异常现象 TypeError: Object of type datetim ...

  5. 移动端rem字体适配JS

    // 『REM』手机屏幕适配,兼容更改过默认字体大小的安卓用户 function adapt(designWidth, rem2px) { // designWidth:'设计图宽度' 1rem==r ...

  6. IDEA解决MAVEN下载插件慢问题

    原文链接:https://blog.csdn.net/qq_25983579/article/details/104398915 使用阿里的maven镜像 右键项目选中maven选项,然后选择“ope ...

  7. 关于cnpm的命令出错 cant find module npm-cli.js,以及vue packages version mismatch出错

    1.cant find module npm-cli.js 这个修复比较简单粗暴,直接找到安装node的安装软件,然后点开,里面有一个修复选项. 修复完就可以了 2.第二个vue packages v ...

  8. PHP utf8_encode() 函数

    定义和用法 utf8_encode() 函数把 ISO-8859-1 字符串编码为 UTF-8.高佣联盟 www.cgewang.com Unicode 是全球标准,已经发展到能够通过每个字符/符号的 ...

  9. 9 16 模拟赛&关于线段树上二分总结

    1 考试时又犯了一个致命的错误,没有去思考T2的正解而是去简单的推了一下式子开始了漫漫找规律之路,不应该这样做的 为了得到规律虽然也打了暴力 但是还是打了一些不必要的程序 例如求组合数什么的比较浪费时 ...

  10. MyBatis-Plus使用(2)-CRUD接口

    参考文档:https://mybatis.plus/guide/crud-interface.html MyBatis-Plus自带的CRUD方法分为Mapper层和Service层,大多数功能是重叠 ...