Linux后台执行命令

当在终端工作时,可能一个持续运行的作业占住屏幕输出,或终端退出时导致命令结束。为了避免这些问题,可以将这些进程放到后台运行,且不受终端关闭的影响,可使用下面的方法:

nohup command > myout.file 2>&1 &

1 后台执行命令

1.1 命令&

在命令后面加上&实现后台运行(控制台关掉(退出帐户时),作业就会停止运行)

command &

例:python run.py &

1.2 命令nohup

nohup命令可以在你退出帐户之后继续运行相应的进程。nohup就是不挂起的意思( no hang up)

nohup command &

例:nohup run.py &

2 kill进程

执行后台任务命令后,会返回一个进程号,可通过这个进程号kill掉进程。

kill -9 进程号

3 输出重定向

由于使用前面的命令将任务放到后台运行,因此任务的输出也不打印到屏幕上了,所以需要将输出重定向到文件中,以方便查看输出内容。

  • 将输出重定向到 file(覆盖)
command1 > file1
  • 将输出重定向到 file(追加)
command1 >> file1
  • 将 stdout 和 stderr 合并后重定向到 file
    • 2>1代表什么,2与>结合代表错误重定向,而1则代表错误重定向到一个文件1,而不代表标准输出;换成2>&1,&与1结合就代表标准输出了,就变成错误重定向到标准输出.
command1 > file1 2>&1

完整写法:

nohup command >out.file 2>&1 &

4 其他

  • nohup执行python程序时,print无法输出
    • 这是因为python的输出有缓冲,导致nohup.out并不能够马上看到输出
    • python 有个-u参数,使得python不启用缓冲
    • nohup python -u test.py > nohup.out 2>&1 &
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容