linux后台运行nohup命令的使用及2>&1字符详解
说明
-
nohup
- nohup(no hang up),指不间断,不挂断,在teminal/账户时退出依然持续运行进程的命令;
- 不指定日志文件的情况下,输出内容默认写入当前运行命令路径下的nohup.out文件中。
-
2>&1
0
表示stdin标准输入,用户键盘输入的内容1
表示stdout标准输出,输出到显示屏的内容2
表示stderr标准错误,报错内容2>&1
是一个整体,>左右不能有空格,即将错误内容重定向输入到标准输出中去。
整体含义
nohup python my.py >> /usr/local/python/xxf/my.log 2>&1 &
// 2>&1中的`&`是为了区分文件1和标准输出1,是一个区分符号,好比python中转义符的作用。而最末尾的`&`是将该命令后台运行。
该命令的含义是用python不间断的运行my.py这个脚本,并且将脚本输出的内容重定向输入my.log中(>>意为追加,如果用>会让其中的内容清空)
后面的my.log 2>&1 是将2(错误内容)输入到&1(标准输出),而&1(标准输出)输入到my.log中,即错误和标准内容都会输出到my.log中。总的来说,就是下面代码的简化版。
nohup python my.py 1>> /usr/local/python/xxf/my.log &
nohup python my.py 2>> /usr/local/python/xxf/my.log &
补充:
my.py >> my.log 和my.py 1 >> my.log是等价的,默认是输出1(标准输出)
如果不想要日志输出
把内容丢入/dev/null
即可
nohup tomcat.sh > /dev/null 2>&1 &
将错误和标准全部丢入/dev/null中,全部销毁。