linux 启动服务后台运行,linux后台启动任务

当我们在终端启动服务或者训练模型时,启动命令往往会阻塞自己,即无法在终端继续输入,同时为了保证终端关闭不影响进程中断,需要在后台启动进程.

1. nohup命令

后台启动常用的命令如下:

nohup command 2>&1 & 或者 nohup command 2>>&1 &

示例: nohup python my.py >>/home/xxx/my.log 2>&1 &

在bash shell中:

0:代表标准输入,即键盘输入的内容

1:代表标准输出,即输出到显示屏的内容

2:代表标准错误,即报错内容

>>: 代表追加, > 会让日志文件的内容清空

nohup: 表示不挂断地执行命令,即便退出当前终端。同时会将屏幕的标准输出追加到默认文件 ‘nohup.out’ 文件。

&:表示在后台执行命令

2>&1: 不能用空格,代表将错误内容重定向到标准输出中。

2. 命令解析

假设有如下命令:

nohup python my.py >> /home/my.log 2>&1 &

其中:

nohup python my.py 这部分意思是用python不间断地执行my.py脚本

my.py >> /home/my.log 这部分等同于 my.py 1>> /home/my.log,即省略了标准输出

/home/my.log 2>&1 这部分又将标准错误重定向到标准输出,之前标准输出又会追加到my.log中,也就是说标准输出和标准错误都会追加到my.log中

其实代码可以拆解为:

nohup python my.py 1>> /home/my.log &

nohup python my.py 2>> /home/my.log &

2>&1中的 & 是为了区分 1 是文件名 还是标准输出1 ,如果省略掉则变成了输出到文件1中。

3. nohup不输出到文件

nohup启动服务时,会默认生成 nohup.out 文件,这样可能会占据相当一部分的磁盘空间,所以便会有一种需求 - 不让nohup 产生日志。

其实是没办法不让 nohup 产生日志的,但是可以利用 linux 的 黑洞 /dev/null ,重定向到它的信息会消失,如果我们不需要保存程序运行时的所有信息时,就可以将信息重定向到 /dev/null 。

示例如下:

nohup python my.py > /dev/null 2>&1 &

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值