导读 | linux下开机以某一个用户执行脚本 |
1 . 编辑:
/etc/rc.local
添加想要被执行的命令即可(默认是以root用户执行)。
注: 有些很特殊的情况 /etc/rc.local 不会被执行,可以 编辑 /etc/init.d/rc.local
2 . 以期望的用户执行命令:
su -c 'ls -l "myfile.txt"' guowei &
解释: 其中需要被执行的命令是 ls -l "myfile.txt", 期望的用户的 guowei, & 表示在后台运行。
3 . 开机以 screen 运行程序脚本,并添加环境变量(no-login):
#!/bin/bash
# 环境变量要在 su 之前设置好,然后 sudo -E 保持环境变量
# 如果直接是root用户执行该脚本,则只需要 su -p 或者 su -m 保持环境变量即可
export GUOWEI_DIR=/home/guowei export PATH=/opt/bin:$PATH source /home/guowei/.bashrc if [ -e /opt/my_app ]; then # sudo -E su -p -l guowei << BASH # 如果要以 guowei 用户执行那些程序的话,去掉注释即可。 su - 表示切换的环境变量,sudo 需要添加 -E 选项。 su -p guowei << BASH # 以用户 guowei 执行以下命令,注意不要加 sudo, 否则就需要以 sudo -E 执行。 cd /home/guowei screen -d -m /opt/my_app # BASH fi # 或者将 export 写在 -c 内部, 加上 -c 和 单引号: su guowei -c 'export A=/opt/bla; blabla~; /opt/my_app' // 注意:双引号跟单引号有区别
然后 ssh 登陆后, 切换到对应用户, screen -ls 可以看到在后台运行的程序。