CentOS后台执行命令
发布网友
发布时间:2024-09-28 20:04
我来回答
共1个回答
热心网友
时间:2024-09-28 23:56
nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。
nohup 命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下,如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。
语法格式参数说明:
Command:要执行的命令。
Arg:一些参数,可以指定输出文件。
&:让命令在后台执行,终端退出后命令仍旧执行。
实例
以下命令在后台执行 root 目录下的 runoob.sh 脚本:
在终端如果看到以下输出说明运行成功:
这时我们打开 root 目录 可以看到生成了 nohup.out 文件。
如果要停止运行,你需要使用以下命令查找到 nohup 运行脚本到 PID,然后使用 kill 命令来删除:
参数说明:
另外也可以使用ps -def | grep "runoob.sh" 命令来查找。
找到 PID 后,就可以使用 kill PID 来删除。
以下命令在后台执行 root 目录下的 runoob.sh 脚本,并重定向输入到 runoob.log 文件:
2>&1 解释:
将标准错误 2 重定向到标准输出 &1 ,标准输出 &1 再被重定向输入到 runoob.log 文件中。
au(x) 输出格式 : USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND USER: 行程拥有者 PID: pid %CPU: 占用的 CPU 使用率 %MEM: 占用的记忆体使用率 VSZ: 占用的虚拟记忆体大小 RSS: 占用的记忆体大小 TTY: 终端的次要装置号码 (minor device number of tty) STAT: 该行程的状态: D: 不可中断的静止 R: 正在执行中 S: 静止状态 T: 暂停执行 Z: 不存在但暂时无法消除 W: 没有足够的记忆体分页可分配 <: 高优先序的行程 N: 低优先序的行程 L: 有记忆体分页分配并锁在记忆体内 START: 行程开始时间 TIME: 执行的时间 COMMAND:所执行的指令
centos7.9系统,运行了一个jar包,想把它停掉,但是怎么kill都杀不死
查看服务名:ps -ef | grep oys-core-4.0-SNAPSHOT.jar
查看得知进程PID = 12906
kill -9 12906 杀死进程,发现线程不存在
再次查看服务名:ps -ef | grep oys-core-4.0-SNAPSHOT.jar ,发现线程PID变了
解释:
那是因为oys-core-4.0-SNAPSHOT.jar 根本就没有启动进程,看到的进程是grep指令的
如图:java 标识的是jar启动的线程,grep标识的进程是输入了指令才显示的
-u 的作用
python的输出是有缓冲的,即使在py脚本中每次遍历都有打印输出,但是因为缓冲的作用,我们不能在nohup.out日志中立即看到打印的输出。
加上-u参数,使得python不使用缓冲。
nohup python myscript.py -u > nohup.out 2>&1 &
解析:
1 nohup 不挂断地运行命令,忽略所有挂断信号(SIGNUP信号),比如当账号注销时。
最后的&:表示后台运行。
nohup command &,表示后台运行nohup命令。
2 linux中的0表示标准输入,1表示标准输出,2表示标准错误输出。
3 > 表示覆盖式重定向。正常输出是把内容输出到显示器上,重定向是把内容输出到文件中。 command > xxx.txt,将输出重定向到xxx文件中。
4 >> 表示追加式重定向。command >> xxx.log,将输出重定向追加到xxx.log文件中。
5 2 > &1 ,2是标准错误输出,1是标准输出,这里的&表示引用的意思,对标准输出的引用。所以这个命令就表示将标准错误输出也重定向到标准输出指向的文件中。