【Ubuntu】python脚本后台运行避免中断并且管理后台运行脚本程序的生命周期以及python脚本定时运行

一、Bash命令行输入命令

nohup python -u xxx.py > result.out 2>&1 &

1、测试python脚本

test.py

#utf-8
import time

i = 1
while True:
    print(i)
    time.sleep(1)
    i += 1

2、后台运行该python脚本

输入bash命令:

nohup python -u test.py > result.out 2>&1 &

解释命令行参数

在这里插入图片描述

二、如何判断后台运行程序状态

2.1 获取后台进程ID

在这里插入图片描述

2.2 查看进程

输入bash命令:

ps 查看所有进程
ps -ef | grep 1465554 查看指定PID进程

在这里插入图片描述
在这里插入图片描述
这里的第二个进程PID 1468263 并不是后台运行程序产生的,而是运行管道符命令产生的。

2.3 查看运行结果

输入bash命令:

tail -f result.out

在这里插入图片描述

三、关闭后台运行程序

知道了进程的PID后,可以直接杀掉进程。
输入bash命令:

kill 进程PID

在这里插入图片描述

四、Ubuntu定时运行指定脚本程序

Linux系统自带有定时执行工具——cron,可以在无需人工干预情况下运行作业。
该工具程序所在位置:/etc/crontab
crontab这个文件里存放的就是cron要执行的命令,以及定时执行的时间,我们需要修改编辑它。

4.1 crontab文件内容理解

进入根目录下配置文件夹etc,编辑crontab文件。
在这里插入图片描述
这里我们添加指定运行时间以及指定脚本的命令在下方即可,我们看下语法:
在这里插入图片描述

minute   hour   day   month   week  user  command     # 分 时 日 月 周 用户 命令

minute: 表示分钟,可以是从 059 之间的任何整数。
hour:表示小时,可以是从 023 之间的任何整数。
day:表示日期,可以是从 131 之间的任何整数。
month:表示月份,可以是从 112 之间的任何整数。
week:表示星期几,可以是从 07 之间的任何整数,这里的 07 代表星期日。
user:linux的用户身份,例如root,或者其他用户
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

在crontab文件中添加定时任务的命令中时间字段除了指定数值外还可以使用通用符号:

星号(*):代表所有可能的值,例如 month 字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在 minute 字段,表示每十分钟执行一次。

4.2 cron定时服务相关指令

cron 服务的启动与停止,命令如下:

service cron start  /*启动服务*/
service cron stop /*关闭服务*/
service cron restart /*重启服务*/
service cron reload /*重新载入配置*/
service cron status /*查看crond状态*/ 

4.3 测试python脚本程序

测试使用的python脚本
在这里插入图片描述

wuguanzheng-test.py

print('这是定时测试脚本~~~~~~~~~~~~~~~~~~~')

在这里插入图片描述

4.4 指定时间运行

添加指定时间脚本:
root用户每个月15号的9点25分钟运行指定的脚本。
在这里插入图片描述

minute   hour   day   month   week   user    command     # 分 时 日 月 周 用户 命令
25       9      15    *       *     用户名  /用户目录下脚本程序

4.5 指定时间运行测试脚本

在这里插入图片描述
添加指定时间脚本:
root用户每月每天每周每小时每分钟运行指定的python脚本。

minute   hour   day   month   week   user    command     # 分 时 日 月 周 用户 命令
*        *      *     *       *       q       python  /home/q/data-api/test-cron.py

将该命令添加到 /etc/crontab 文件中,进行修改出现警告:
在这里插入图片描述
表示该文件只可读不可修改,因为没有权限,我们需要修改下该文件的权限,或者使用root账户登录进行修改。
这里我们采用root账户进行修改文件 ( 不采用修改文件权限是该文件也属于敏感文件不需要所有人都操作)
在这里插入图片描述
然后修改crontab文件,添加运行命令:
在这里插入图片描述

4.6 启动cron定时服务

service cron start  /*启动服务*/

4.7 查看cron服务状态(判断命令到底是否定时执行)

service cron status

在这里插入图片描述
在这里插入图片描述

4.8 查看定时任务打印结果

为了验证定时任务是否正常执行,从crontab的日志里找原因。
切换到root账户下。

1、修改rsyslog
vim /etc/rsyslog.d/50-default.conf

在这里插入图片描述

2、去掉cron前面 # 注释符

在这里插入图片描述

3、重启该日志rsyslog
service rsyslog  restart
4、查看该定时日志
tail -f /var/log/cron.log

在这里插入图片描述

4.9 关闭该定时服务

1、查看cron是否启动

在这里插入图片描述

2、关闭cron定时任务
service cron stop /*关闭服务*/

在这里插入图片描述
关闭服务后日志内容未再更新。
在这里插入图片描述

3、关闭定时任务缺陷

该方法会关闭所有定时任务,建议直接修改crontab文件注释掉任务行,再重启文件。

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值