当前位置: > Linux编程 >

linux下开机以某一个用户执行脚本

时间:2018-02-02 13:38来源:linux.it.net.cn 作者:IT

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 可以看到在后台运行的程序。


 

(责任编辑:IT)
------分隔线----------------------------