介绍一个python工程师必须掌握的 CentOS 命令,nohup

举报
梦想橡皮擦 发表于 2022/08/04 14:02:52 2022/08/04
【摘要】 ⛳️ 实战背景本篇博客为大家打来的是一个命令,如果未来你希望成为 Python 工程师,就一定会有该命令的场景,它经常出现在服务器端,这里优先选择 CentOS 系统。本命令叫做 nohup,英文全称叫做 no hangup,即不挂起,表示程序在系统后台补挂断运行,即使我们退出终端,程序也不会终止运行。补充一个知识点,HUP 是信号的意思,它是在终端被终止的时候向它所关联的进程发送的信号,...

⛳️ 实战背景

本篇博客为大家打来的是一个命令,如果未来你希望成为 Python 工程师,就一定会有该命令的场景,它经常出现在服务器端,这里优先选择 CentOS 系统。

本命令叫做 nohup,英文全称叫做 no hangup,即不挂起,表示程序在系统后台补挂断运行,即使我们退出终端,程序也不会终止运行。

补充一个知识点,HUP 是信号的意思,它是在终端被终止的时候向它所关联的进程发送的信号,进程收到该信号就会终止运行。

如果你刚刚接触 Python,那你需要了解一下本场景,在工作中,Python 工程师经常需要去服务器端运行脚本,代码简单且运行时间短的可以在终端直接运行,然后等待结束即可。但遇到耗时长,或者需要反复运行的代码,我们需要让其在后台运行,即退出终端程序不终端。
看到这里,你就会发现,该场景和 nohup 的目标重合了。

nohup 命令,默认会输出一个 nohup.out 在程序目录,如果当前目录 nohup 仅支持读操作,会在 $HOME 目录中重新创建文件。

nohup 命令基本格式

语法格式如下:

nohup command arguments &

其中参数说明如下:

  • command:待执行的命令;
  • arguments:参数,可以指定输出文件;
  • &:让命令在后台执行。

nohup 仅表示不挂起运行,& 是后台运行。

也可以使用:

nohup options

查看 CentOS 系统 nohup 版本,可以使用下述命令,例如橡皮擦服务端的版本为 8.22,你可以实测一下目标环境版本号。

nohup --version
nohup (GNU coreutils) 8.22
Copyright (C) 2013 Free Software Foundation, Inc.

在正式学习前,准备一个测试脚本,即 Shell 版本的 Hello World!

#! /bin/bash
# hello world
echo hello world

该脚本的执行命令是

bash hello.sh

将上述代码在后台执行,使用如下代码:

nohup bash hello.sh > hello.log 2>&1 &

其中 hello.log 表示的是日志文件,2>&1 表示将错误 2 重定向到标准输出 &1,然后再重定向到 hello.log 文件中。

  • 0:stdin 标准输入;
  • 1:stdout 标准输出;
  • 2:stderr:标准错误输出。

command >hello.log 是将 command 的输出重定向到 hello.log 文件中,也就是输出内容不打印到终端,而是输出到 hello.log 文件中。
2>&1 是将标准错误重定向到标准输出,而且标准输出已被重定向到 hello.log 文件,即将标准出错也输出到 hello.log 文件中。

如果希望不输出日志文件,可以使用如下命令:

nohup python3 demo.py  > /dev/null 2>&1 &

扩展命令

使用 jobs 可以查看后台运行的程序:

jobs -l

得到结果如下所示:

[1]+  运行中  nohup python3 demo.py > demo.log 2>&1 &

后台程序重新展示到前台,使用 fg,此时使用 ctrl+z 可以暂停任务到后台,使用 bg 将后台任务继续运行。

如果要停止后台程序,可以使用 ps 命令先查询出其 pid 号码,然后使用下述命令删除:

kill -9 pid

📣📣📣📣📣📣
右下角有个大拇指,点赞的漂亮加倍
💗 你正在阅读 【梦想橡皮擦】 的博客
👍 阅读完毕,可以点点小手赞一下
🌻 发现错误,直接评论区中指正吧
📆 橡皮擦的第 621 篇原创博客

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。