Linux之nohup命令

1、nohup命令功能简介

[root@vms002 opt]# whatis nohup
nohup (1)   - run a command immune to hangups, with output to a non-tty #运行一个不受hangups影响的命令,输出到一个非tty
nohup (1p)  - invoke a utility immune to hangups   #调用不受hangups影响的实用程序

    nohup命令可以将以忽略挂起信号的方式运行起来,被运行的程序的输出信息将不会显示到终端。无论是否将nohup命令的输出重定向到终端,输出都将附加到当前目录下的nohup.out文件中。如果当前目录的nohup.out文件不可写,输出重定向到$HOME/nohup.out文件中。如果没有文件能创建或打开以用于追加,那么command参数指定的命令不可调用。如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。

    nohup是永久执行的意思,而 & 是指在后台运行。就是指,用nohup运行的命令或程序可以永久的执行下去,和用户终端没有关系,例如我们断开ssh连接都不会影响他的运行。

    注意:当我们用 & 运行的程序是守护进程时,我们断开终端后这个守护进程会继续在后台运行。如果这个进程不是守护进程时,当我们断开终端后,这个进程也跟着断开停止运行了。

2、nohup语法

nohup [命令]
nohup [选项]

3、nohup选项

选项 说明
--help 显示此帮助信息并退出
--version 显示版本信息并退出

4、实例

    使用nohup命令时,如果指定了输出文件,那么输出信息则输出到指定的文件中。如果没有指定输出文件,则输出信息会输出到当前目录中的nohup.out文件中。

    1)使用nohup命令查看当前目录下的文件,并把输出结果重定向到ls.log文件中。

[root@vms002 opt]# ls
a_  aa.txt  a^x.txt  rh  rh134  tmp
[root@vms002 opt]# nohup ls >> ls.log
nohup: 忽略输入重定向错误到标准输出端
[root@vms002 opt]# ls
a_  aa.txt  a^x.txt  ls.log  rh  rh134  tmp
[root@vms002 opt]# cat ls.log 
a_
aa.txt
a^x.txt
ls.log
rh
rh134
tmp

    2)使用nohup命令查看当前目录下的文件,不指定输出文件,查看输出结果是否在当前目录下的nohu.out文件中。

[root@vms002 opt]# ls
a_  aa.txt  a^x.txt  ls.log  rh  rh134  tmp
[root@vms002 opt]# nohup ls
nohup: 忽略输入并把输出追加到"nohup.out"
[root@vms002 opt]# ls
a_  aa.txt  a^x.txt  ls.log  nohup.out  rh  rh134  tmp
[root@vms002 opt]# cat nohup.out 
a_
aa.txt
a^x.txt
ls.log
nohup.out
rh
rh134
tmp

5、总结

    1)nohup命令是永久执行,忽略挂起信号。&是指在后台运行。

    2)用 & 后台运行程序时,如果是守护进程,断开终端则程序继续运行,如果不是守护进程,断开终端则程序也会被断开停止运行。

    3)使用nohup命令时,如果指定了输出文件,输出信息则会附加到输出文件中,如果没有指定输出文件,则输出信息会附加到当前目录下的nohup.out文件中,如果当前目录的nohup.out文件不可写,输出重定向到$HOME/nohup.out文件中。


猜你喜欢

转载自blog.51cto.com/13716812/2407677