当前位置: 首页 > article >正文

Linux系统设置开机自启动.py脚本(树莓派Ubuntu)

方法一:使用systemd

  1. 创建服务文件
    /etc/systemd/system/ 目录下创建一个新的服务文件,例如 my_script.service

    sudo nano /etc/systemd/system/my_script.service
    
  2. 编写服务配置
    在服务文件中添加以下内容(根据需要调整路径和用户):

    [Unit]
    Description=My Python Script
    
    [Service]
    ExecStart=/usr/bin/python3 /path/to/your/script.py
    WorkingDirectory=/path/to/your/
    StandardOutput=journal
    StandardError=journal
    Restart=always
    User=your_username
    
    [Install]
    WantedBy=multi-user.target
    
    • ExecStart:指定Python解释器和脚本路径。
    • WorkingDirectory:脚本的工作目录。
    • User:指定执行脚本的用户。
  3. 重新加载systemd配置

    sudo systemctl daemon-reload
    
  4. 启用服务

    sudo systemctl enable my_script.service
    
  5. 启动服务(可选)

    sudo systemctl start my_script.service
    

方法二:使用cron任务

  1. 打开crontab编辑器

    crontab -e
    
  2. 添加新任务
    在文件末尾添加以下行(替换路径和用户):

    @reboot /usr/bin/python3 /path/to/your/script.py
    
    • @reboot表示在系统启动时运行该命令。
  3. 保存并退出

方法三:使用init.d(适用于较老的系统)

  1. 创建脚本
    /etc/init.d/ 目录下创建一个新的脚本,例如 my_script

    sudo nano /etc/init.d/my_script
    
  2. 编写脚本内容

    #!/bin/sh
    ### BEGIN INIT INFO
    # Provides:          my_script
    # Required-Start:    $local_fs $network
    # Required-Stop:     $local_fs $network
    # Default-Start:     2 3 4 5
    # Default-Stop:      0 1 6
    # Short-Description: Start my script at boot time
    ### END INIT INFO
    
    case "$1" in
        start)
            echo "Starting my_script"
            /usr/bin/python3 /path/to/your/script.py &
            ;;
        stop)
            echo "Stopping my_script"
            killall python3
            ;;
        *)
            echo "Usage: /etc/init.d/my_script {start|stop}"
            exit 1
            ;;
    esac
    
    exit 0
    
  3. 使脚本可执行

    sudo chmod +x /etc/init.d/my_script
    
  4. 添加到启动项

    sudo update-rc.d my_script defaults
    

以上方法各有优缺点,systemd是现代Linux发行版中推荐的方式,具有更好的管理和监控功能。cron方法简单易用,适合小脚本;init.d则适用于较老的系统。


http://www.kler.cn/news/368614.html

相关文章:

  • hudi编译安装,使用spark3的maven指令
  • PHP-FPM 性能配置优化
  • 基于Datawhale开源量化投资学习指南(11):LightGBM在量化选股中的优化与实战
  • uniapp使用easyinput文本框显示输入的字数和限制的字数
  • 【C++单调栈 贡献法】907. 子数组的最小值之和|1975
  • React常用前端框架合集
  • 使用虚拟机搭建环境:CentOS7 Docker、MySQL、Redis 安装与配置
  • 微信小程序美团点餐
  • 【软件工程】软件项目管理/工程项目管理复习资料
  • Rust: [u8] 与 String 相互转换
  • JavaScript(操作元素属性:样式style,className,classList,表单元素,自定义属性,间歇函数)注册用户协议同意倒计时
  • 【论文笔记】MLSLT: Towards Multilingual Sign Language Translation
  • 数据结构之 二叉树详解一 介绍篇
  • 如何提高游戏的游戏性
  • 电动汽车与软件定义汽车(SDV)时代的汽车行业变革
  • 【机器学习-无监督学习】自编码器
  • First - Word Fall - Through ( FWFT ) Read Operation
  • 【制造业&PPE】施工安全防护装备检测系统源码&数据集全套:改进yolo11-RVB-EMA
  • ubuntu20上部署gitlab并开启ipv6访问
  • 鸿蒙生态开发以及技术栈介绍
  • 图像平滑处理
  • 关于Drawio调整圆角弧度
  • 突破AI极限!GPT写的英语作文在全国大学生大赛中得分99!
  • No.19 笔记 | WEB安全 - 任意文件操作详解 part 1
  • JAVA基础面试题准备
  • SQL进阶技巧:巧用异或运算解决经典换座位问题