linux后台执行命令:&和nohup

nohup (no hang up)命令

用途:不挂断地运行命令。

语法:nohup Command [ Arg … ] [ & ]

例子: nohup sh example.sh &

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


nohup 命令可以使命令永久的执行下去,和终端没有关系,退出终端也不会影响程序的运行; 
& 是后台运行的意思,但当用户退出的时候,命令自动也跟着退出。 
那么,把两个结合起来nohup 命令 &这样就能使命令永久的在后台执行


无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。

当成功地提交进程以后,就会显示出一个进程号,可以用它来监控该进程,或杀死它。(ps -ef | grep 进程号 或者 kill -9 进程号)


进程号7585

  • 查看日志(动态显示)

    tail -f output.log
    • 1
  • 查看日志(一次性显示整个文件)

    cat output.log
    • 1
  • 杀死进程
sudo kill 进程号
  • 1
kill 9 进程号 #绝杀

附加:

nohup 命令 > output.log 2>&1 &让命令在后台执行。

其中 0、1、2分别代表如下含义: 
0 – stdin (standard input) 
1 – stdout (standard output) 
2 – stderr (standard error)

nohup+最后面的&是让命令在后台执行

>output.log 是将信息输出到output.log日志中

2>&1是将标准错误信息转变成标准输出,这样就可以将错误信息输出到output.log 日志里面来。


& 后台执行
> 输出到
不过联合使用也有其他意思,比如nohup输出重定向上的应用
例子:nohup abc.sh > nohup.log 2>&1 &
其中2>&1 指将STDERR重定向到前面标准输出定向到的同名文件中,即&1就是nohup.log

参考链接:

https://my.oschina.net/u/166793/blog/1627570  查看进程相关命令

https://blog.csdn.net/liuyanfeier/article/details/62422742

https://www.cnblogs.com/allenblogs/archive/2011/05/19/2051136.html

猜你喜欢

转载自blog.csdn.net/yangnianjinxin/article/details/80423939