![加载用户桌面后如何在引导期间以 root 身份运行脚本](https://linux22.com/image/107345/%E5%8A%A0%E8%BD%BD%E7%94%A8%E6%88%B7%E6%A1%8C%E9%9D%A2%E5%90%8E%E5%A6%82%E4%BD%95%E5%9C%A8%E5%BC%95%E5%AF%BC%E6%9C%9F%E9%97%B4%E4%BB%A5%20root%20%E8%BA%AB%E4%BB%BD%E8%BF%90%E8%A1%8C%E8%84%9A%E6%9C%AC.png)
我有一个以用户身份启动 Dropbox 的脚本保管箱。我希望它在加载桌面环境后自动启动。桌面环境运行为另一个用户不是“保管箱”。
当我运行它时:
root@localhost:/home/gameboy# /etc/init.d/dropbox start
工作正常。
但我需要它自动启动。我放置了一个 Desktop Entry 文件/etc/xdg/autostart/
,但没有成功:
gameboy@localhost:~$ sudo cat /etc/xdg/autostart/dropbox.desktop
[Desktop Entry]
Name=Dropbox
Exec=/etc/init.d/dropbox start
Icon=dropbox
Type=Application
Categories=Network;FileTransfer;
gameboy@localhost:~$ sudo cat /etc/init.d/dropbox
#!/bin/bash
### BEGIN INIT INFO
# Provides: dropbox
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts the dropbox service
# Description: starts dropbox using start-stop-daemon
### END INIT INFO
xhost +SI:localuser:dropbox &>/dev/null
DAEMON2=/usr/local/dropbox/dropbox-lnx.x86_64-20.4.19/dropbox
DROPBOX_USERS="dropbox"
DAEMON=/usr/local/dropbox/dropboxd
#unset DISPLAY
start() {
echo "Starting dropbox..."
for dbuser in $DROPBOX_USERS; do
HOMEDIR=$(getent passwd $dbuser | cut -d: -f6)
if [ -x $DAEMON ]; then
HOME="$HOMEDIR" start-stop-daemon -b -o -c $dbuser -S -u $dbuser -x $DAEMON
fi
done
}
stop() {
echo "Stopping dropbox..."
for dbuser in $DROPBOX_USERS; do
HOMEDIR=$(getent passwd $dbuser | cut -d: -f6)
if [ -x $DAEMON2 ]; then
start-stop-daemon -o -c $dbuser -K -u $dbuser -x $DAEMON2
fi
done
}
status() {
for dbuser in $DROPBOX_USERS; do
dbpid=$(pgrep -u $dbuser dropbox)
if [ -z "$dbpid" ] ; then
echo "dropboxd for USER $dbuser: not running."
else
echo "dropboxd for USER $dbuser: running (pid $dbpid)"
fi
done
}
case "$1" in
start)
start
sleep 1
status
;;
stop)
stop
sleep 1
status
;;
restart|reload|force-reload)
stop
start
sleep 1
status
;;
status)
status
;;
*)
echo "Usage: /etc/init.d/dropbox {start|stop|reload|force-reload|restart|status}"
exit 1
esac
exit 0
gameboy@localhost:~$
如何让它自动启动?
答案1
当然已经有一段时间了,但对于其他人来说又是一次……这是一个需要 root 权限的守护进程服务;因此,在自动启动的桌面文件中运行它不会执行您想要的操作。
您想要做的是使用 init 系统的守护进程控制(例如 /etc/init.d/dropbox)并将其添加到您的在里面daemopn 的控件,正如您所看到的,它应该在您的图形运行级别中运行。
如果您碰巧没有管理员权限,则无法以普通用户的身份将其作为特权守护程序启动。否则,如果您这样做,请查找使用您链接的 init.d 脚本的 init 手册。
(我知道这已经晚了,但适用于其他用户)。