ユーザーデスクトップのロード後に起動中にrootでスクリプトを実行する方法

ユーザーデスクトップのロード後に起動中にrootでスクリプトを実行する方法

Dropboxをユーザーとして起動するスクリプトがありますセーフティボックス。デスクトップ環境をロードした後に自動的に起動するようにしたいと思います。デスクトップ環境は次のように実行されます。他のユーザー「安全金庫」ではありません。

私がそれを実行したとき:

root@localhost:/home/gameboy# /etc/init.d/dropbox start

うまくいきます。

しかし、自動的に起動する必要があります。/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マニュアルを見つけてください。

(遅くなりましたが、他のユーザーにも効果があるでしょう。)

関連情報