首页
读书
网课

正文

nohup 命令的功能是在不挂端的情况下执行命令,默认会输出一个 nohup.out 的文件。


用法:


nohup COMMAND [ARG]...


nohup OPTION


如果标准输入是终端,则将其从不可读的文件中重定向。 如果标准输出是终端,则尽可能将输出附加到“nohup.out”,否则附加到“$HOME/nohup.out”。 如果标准错误是终端,则将其重定向到标准输出。 要将输出保存到 FILE,请使用“nohup COMMAND > FILE”。


选项


--help        帮助文档


--version        版本信息


使用示例:


写一个实例脚本,每一秒输出一个数字,数字自动增加:


# cat nohuptest.sh

#!/bin/bash

count=0

while [[ $count -lt 10000 ]]

do

echo $count

sleep 1

((count++))

done

首先在前台执行一下,看看是什么效果:


# sh nohuptest.sh

0

1

2

3

4

5

^C

在 linux 系统中,^C(Ctrl + C)发出的是 SIGINT 信号,可以终止进程,更多关于信号的内容,请看linux 命令:kill 详解_yspg_217的博客-CSDN博客


在接收到 SIGINT 信号后,前台执行的进程立刻就终止了。


下面用 nohup 试一下:


# nohup sh nohuptest.sh

nohup: ignoring input and appending output to ‘nohup.out’

 

^C

# cat nohup.out

0

1

2

3

4

5

 

# ps -ef | grep nohup

#

如果使用 nohup 接启动命令,虽然输出是从终端转到了 nohup.out 中,但是前台还是被占用,无法执行其他操作。但是在操作了 ^C 后,虽然可以进行其他操作,进程也停止了。


# nohup sh nohuptest.sh &

[1] 9153

# nohup: ignoring input and appending output to ‘nohup.out’

 

# cat nohup.out

0

# cat nohup.out

0

1

# cat nohup.out

0

1

2

...

 

# ps -ef | grep nohup

root      9153  6178  0 14:38 pts/0    00:00:00 sh nohuptest.sh


使用 & 后,输出一个进程ID,进程在后台执行,前台不受影响。查看 nohup.out 文件,发现数字在逐渐增加。


# nohup sh nohuptest.sh > /dev/null &

[1] 10334

# nohup: ignoring input and redirecting stderr to stdout

 

# cat nohup.out

#

可以把输出重定向到 /dev/null,/dev/null 是一个黑洞,重定向到它的数据都会被扔掉。查看 nohup.out,发现是空文件。



上一篇: 没有了
下一篇: 没有了
圣贤书院