Ubuntu/Linux 开机运行指定的命令/自动运行命令

PS: 如果你用的桌面环境,可以在startup applications程序里添加你想要执行的命令,简单,执行优先级最低。如果没有桌面环境或者想执行更复杂的逻辑,继续阅读本文吧。

分两种方法:

方法一

参考: https://www.pimspeak.com/ubuntu-20-04-start-on-boot.html

  1. /lib/systemd/system/rc-local.service文件最后添加如下内容

    [Install]
    WantedBy=multi-user.target
    Alias=rc-local.service
    
  2. 把这个文件链接到/etc/systemd/system/目录下面

    ln -s /lib/systemd/system/rc-local.service /etc/systemd/system/
    
  3. 编辑/etc/rc.local文件,写入自定义脚本。比如

     #!/bin/bash
     touch /root/a.txt
     bash /root/app.sh
    

    注意,第一句话是必要的。

  4. 给rc.local加上执行权限

    sudo chmod a+x /etc/rc.local
    
  5. 默认使用root用户执行,如果想使用非root用户,可以在/etc/rc.local文件中这么写,即在命令前加上su - 用户名 -c

     #!/bin/bash
     su - user1 -c "touch /home/user1/a.txt"
     su - user1 -c "bash /home/user1/a.sh"
    

方法二

[转载]https://blog.csdn.net/tuzixini/article/details/95616333

  1. 在 /etc/init.d/ 中创建自己的开机运行脚本,脚本名字任意
sudo vim /etc/init.d/my.sh
  1. 仿照其他的脚本写一个头,然后在后面写你想要执行的命令这里照搬samba-ad-dc,盲猜Required-Start应该是在这之前需要什么程序先启动之类的。Default-Start应该是设置的优先级之类的。
#! /bin/sh

### BEGIN INIT INFO
# Provides:          samba-ad-dc
# Required-Start:    $network $local_fs $remote_fs
# Required-Stop:     $network $local_fs $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Samba daemons for the AD DC
# Description:  Meta-service to provide AD and SMB/CIFS services to clients
### END INIT INFO


# 比如
/opt/frp/frpc -c /opt/frp/frpc.ini

  1. 添加可执行权限
sudo chmod 755 /etc/init.d/my.sh
  1. 加入开机启动
## 90为优先级,越大表示执行的越晚
sudo update-rc.d my.sh defaults 90
  1. 删除启动项
sudo update-rc.d -f my.sh remove  

你可能感兴趣的:(Ubuntu/Linux 开机运行指定的命令/自动运行命令)