Centos7.9设置定时执行脚本+开机自启脚本
有一个a.py
文件想要每一个小时运行一次,并且实现开机自启动。
设置定时任务
要在CentOS 7.9上设置定时执行您的a.py
文件,您可以使用crontab
。这是一个在Linux系统中用于设置周期性执行任务的工具。以下是您可以遵循的步骤:
首先,确保您的系统已经安装了
crontab
。您可以通过运行以下命令来安装它(如果尚未安装):1
yum install crontabs
然后,启动并使
crond
服务在开机时自启动:1
2systemctl enable crond
systemctl start crond接下来,使用
crontab -e
命令编辑crontab
文件,为您的a.py
文件添加一个定时任务。例如,如果您想每小时执行一次该脚本,可以添加以下行:1
2
3
40 * * * * /usr/bin/python /path/to/a.py
# 下面这个是我的脚本运行
0 * * * * /root/miniconda3/bin/python /root/system_check/user_analysic.py请确保将
/path/to/a.py
替换为您a.py
文件的实际路径。保存并退出编辑器。
crontab
会自动安装您的新定时任务。最后,您可以通过
crontab -l
命令确认您的定时任务已经正确设置。
crontab
定时任务的格式:
0 * * * *
:这部分是crontab
的时间字段,指定了任务执行的频率。每个星号代表不同的时间单位:
- 第一个数字
0
代表分钟,这里设置为0
表示每小时的第0分钟。- 第二个星号
*
代表小时,可以是从0
到23
的任何数字,这里的星号表示每个小时。- 第三个星号
*
代表一月中的日子,可以是从1
到31
的任何数字。- 第四个星号
*
代表月份,可以是从1
到12
的任何数字。- 第五个星号
*
代表一周中的天数,可以是从0
(代表周日)到6
(代表周六)的任何数字。因此,
0 * * * *
的意思是每小时的第0分钟执行一次,也就是说,每个整点都会执行一次。
/usr/bin/python
:这是Python解释器的路径,用于执行Python脚本。
/path/to/a.py
:这是您的Python脚本a.py
的路径。您需要将其替换为脚本实际所在的路径。每两个小时执行一次:0 */2 * * * /usr/bin/python /path/to/a.py
综上所述,整行代码
0 * * * * /usr/bin/python /path/to/a.py
的意思是:每小时的开始时刻(每个整点),系统会调用/usr/bin/python
解释器来执行位于/path/to/a.py
的Python脚本。这是一种自动化执行脚本的常用方法,非常适合定期运行的任务。
Q:如果我的python
不在/usr/bin/python
怎么办?
A:那就要用到以下方法去查询。 在CentOS系统中,您可以通过几种方法来查找Python解释器的路径。以下是一些常用的命令:
which
命令:这个命令会在您的PATH环境变量中搜索可执行文件,并返回找到的第一个匹配项的路径。您可以这样使用它:1
which python
如果您有多个Python版本安装,您可能需要指定版本号,例如:
1
which python3
whereis
命令:这个命令会搜索系统的标准二进制文件位置、源代码和手册页,并返回所有找到的路径。使用方法如下:1
whereis python
type
命令:这个命令用于显示指定命令的类型。如果是可执行文件,它还会显示其路径。例如:1
type -P python
Python交互式解释器:您可以直接在Python交互式解释器中查找
sys.executable
,这将给出当前Python解释器的完整路径。打开终端,输入python
进入Python交互式环境,然后输入以下命令:1
2import sys
print(sys.executable)
这些方法应该能帮助您找到Python解释器的路径。一旦找到,您就可以在crontab
任务中使用正确的路径来执行您的Python脚本了。
设置开机自启动
要将您的a.py
脚本设置为开机自启动,您可以使用以下方法之一:
使用
/etc/rc.d/rc.local
文件:首先,确保
/etc/rc.d/rc.local
文件具有可执行权限。如果没有,您可以使用以下命令赋予权限:1
sudo chmod +x /etc/rc.d/rc.local
然后,编辑
/etc/rc.d/rc.local
文件,在文件末尾添加您的脚本启动命令,例如:1
/usr/bin/python /path/to/a.py
请确保将
/path/to/a.py
替换为您的脚本实际路径。
创建一个新的
systemd
服务:创建一个新的服务文件,例如
a.service
,并将其放置在/etc/systemd/system/
目录下。在服务文件中,添加以下内容:
1
2
3
4
5
6
7
8
9
10
11
12[Unit]
# 这个部分是单元文件的头部,定义了服务的元数据。
Description=My Python Script # 描述服务的内容,这里是“我的Python脚本”。
[Service]
# 这个部分指定了服务的行为。
ExecStart=/usr/bin/python /path/to/a.py # ExecStart指令指定了启动服务时执行的命令。这里它调用Python解释器来运行位于/path/to/a.py的脚本。
[Install]
# 这个部分定义了如何安装这个单元,即如何使它在系统启动时自动启动。
WantedBy=multi-user.target # WantedBy指令告诉systemd在哪个目标(target)下启动这个服务。multi-user.target是多用户的运行级别,适用于没有图形界面的常规服务器环境。启用服务并设置为开机自启动:
1
2sudo systemctl enable a.service
sudo systemctl start a.service
使用
chkconfig
工具:将您的启动脚本放入
/etc/rc.d/init.d/
目录。赋予脚本可执行权限:
1
sudo chmod +x /etc/rc.d/init.d/a.py
使用
chkconfig
添加到开机自启动:1
2sudo chkconfig --add a.py
sudo chkconfig a.py on
以上方法可以帮助您设置脚本在CentOS 7.9系统开机时自动执行。
参考文章: