随笔 - 356  文章 - 19  评论 - 89  阅读 - 235万

介绍一下 linux命令 nohup 和 & 使得程序在后台运行

运行命令时想要直接挂在后台 在命令后面加&  这样命令就挂在后台运行了 就算按Ctrl+c  也不会中断 但是程序输出会打印在终端

command &

        比如:python3 del_instruments.py& 

 

        执行命令后会返回一个进程号:如下:[1] 78272            其中,pid=78272

        使用jobs命令可以查看当前后台运行的进程如:[1]+  Running                 python3 del_instruments.py &

        想关闭时kill -9 78272就可以了

(env1) livia:script apple$ python3 del_instruments.py&
[1] 78272
(env1) livia:script apple$ jobs
[1]+  Running                 python3 del_instruments.py &

 ‘command &’ 当关闭窗口或者退出ssh 时,进程也会被关闭,如果想保持进程一直运行怎么办呢?

格式:

nohup command

该命令在缺省情况下会把标准输出到nohup.out文件中,也就是不会在终端输出标准输出(你的打印)

解释如下:

        nohup:no hang up 也就是不挂断的意思 命令可以将程序以忽略挂起信号的方式运行起来,就是即使退出ssh进程也不会挂断,但这个命令并没有后台运行的意思,和后台半毛钱关系没有,只是执行了一个命令,忽略挂起信号而已(注意ctrl+c可以强制退出)

 

如果想把程序放到后台运行,而且退出ssh也不挂断咋办呢?两者结合一下即可:

nohup command &

 

案例:

(env1) livia:script apple$ nohup python3 del_instruments.py &
[1] 78498
(env1) livia:script apple$ appending output to nohup.out

(env1) livia:script apple$ jobs
[1]+  Running                 nohup python3 del_instruments.py &
(env1) livia:script apple$

注意 :执行命令后会收到一条提示  appending output to nohup.out 要点击一下enter才算成功把命令放到后台运行哦  否则可能会失败

  

如果你还是不懂,没关系,看看大白话

区别:

command + &:就是在后台运行命令,会把print打印在终端,ctrl+c不可以终止进程,随着ssh退出或窗口关闭会关闭进程

nohup + command: 忽略挂起运行命令,不会把print打印在终端,Ctrl+c可以中断进程,随着ssh退出或者窗口关闭不会关闭进程

 nohup + command + &: 忽略挂起,在后台运行命令,不会把print打印在终端,随着ssh退出或者窗口关闭不会关闭进程,一般使用这个 

 转自:https://blog.csdn.net/weixin_40647516/article/details/103733853

posted on   苦涩的茶  阅读(471)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
历史上的今天:
2016-11-02 单网卡多网段访问设置(内外网共用)

// 1.生成目录索引列表  
点击右上角即可分享
微信分享提示