树莓派创建开机自启动任务

一、编写需要开机启动的后台任务

毕竟为了醋才能包饺子嘛~
简单写一个输出 x.hello 的demo用于测试后续的配置是否成功。

import time

# 文件路径
file_path = "/home/pi/Desktop/output.txt"  # 根据具体情况修改

def write_hello():
    count = 1
    try:
        while True:
            with open(file_path, 'a') as file:
                file.write(f"{count}. hello\n")
                count += 1
            time.sleep(1)  # 每隔1秒写入一次
    except KeyboardInterrupt:
        print("程序被中断,正在退出...")
        # 可以在这里执行清理工作或记录退出信息

if __name__ == "__main__":
    write_hello()

二、具体操作

1、给予文件权限

假设文件路径:

/home/pi/Desktop/write_hello.py

终端输入:

chmod 777 /home/pi/Desktop/write_hello.py

以防文件没有权限可以执行,其实这个指令给的权限太大了,大家可以根据需求来给文件具体的权限。

2、编辑cron表

终端输入:

crontab -e

这里可以介绍一下这个指令:
在树莓派(或其他Linux系统)中,crontab -e 是用于编辑用户的定时任务表(称为“cron”表)的命令。通过 crontab -e,用户可以设置定时任务,这些任务会在指定的时间自动运行,常用于自动化脚本执行或系统维护。

  • 自动化任务管理:crontab -e 可以帮助用户定期执行脚本或命令,比如每天备份数据、每小时检查系统状态等。
  • 调度命令:可以设定任务在特定的分钟、小时、日、月或星期几执行,或者使用特殊的间隔符(例如 @reboot,在系统重启时执行)。
  • 独立于用户会话:使用 crontab 设置的任务在后台独立运行,无需用户手动启动,即使退出会话也会执行。

具体用法这里就不详细介绍了!!


第一次打开的时候会显示选择编辑器,我这里选择了nano编辑器。
在crontab编辑器当中添加指令:

@reboot /usr/bin/python3 /home/pi/Desktop/write_hello.py &

下面具体介绍一下指令的作用:

  • @reboot:表示在每次树莓派重启时执行这个命令。
  • /usr/bin/python3:这是 Python3 的解释器路径,通常在树莓派上是/usr/bin/python3,可以通过 which python3 命令确认。
  • /home/pi/Desktop/write_hello.py:这是你的 Python 脚本路径、
  • &:让脚本在后台运行,这样它不会阻塞系统的其他启动进程。

编辑好之后保存、退出编辑器。

3、检查是否编辑成功

终端输入:

crontab -l

可以检查是否修改成功。

4、重启测试程序是否成功执行

终端输入:

sudo reboot

进行重启设备,之后就可以在路径下查看是否生成了output.txt文件了。如果你有看见,就说明配置成功了~~

5、杀死后台程序

从上面在cron表当中的指令可以看到有&这个标志,说明程序是在后台一直执行的,也就意味着无法通过终端直接关闭这个程序,此时可以通过查询文件的PID来杀死进程。
终端输入:

ps aux | grep write_hello.py

通过ps来查找后台程序,使用grep匹配write_hello.py这个程序
会有如下的输出:

pi        1234  0.0  0.1  26756  2404 pts/0    S    10:00   0:00 python3 /home/pi/Desktop/write_hello.py
pi        5678  0.0  0.0  13976   876 pts/1    S+   10:01   0:00 grep --color=auto write_hello.py

这里需要强调一下只有第一个python3 /home/pi/Desktop/write_hello.py才是后台执行的程序,第二个虽然也匹配到了write_hello.py,但实际上只是grep指令进行匹配的后台程序,如果执行要匹配python执行的后台程序,可以将指令改为:

ps aux | grep "[w]rite_hello.py"

这样输入就类似:

pi        1234  0.0  0.1  26756  2404 pts/0    S    10:00   0:00 python3 /home/pi/Desktop/write_hello.py

查询到程序的PID为1234,直接使用kill指令杀掉即可。
终端输入:

kill 1234

即可关闭这个后台任务了。

posted @ 2024-11-08 15:59  笑眯眯办大事  阅读(28)  评论(0编辑  收藏  举报