Unity Desktopの起動スクリプトはどこにありますか?


11

lightdm認証が成功し、Unityがロードを開始したらすぐにスクリプトを実行したい そして、rootユーザーとしてスクリプトを実行したいと思います。

Unityの起動スクリプトはどこにありますか?


Xを読み込んだ後にスクリプトを実行したい。
14年


@Shnd Xは、実際にはlightdmの前に起動します。これは、lightdmもXで実行されるためです。ログインしているユーザーがあるかどうかに関係なく(たとえばXを起動する)、まったく別の質問であるよりも、コンピューターをブートするだけでスクリプトを実行することもできます。ユーザーとして何かを実行したい場合は、おそらくそれが必要であり、答えは初期化システムに依存します。
erikbwork 14

回答:


5

最初にスクリプトを配置/usr/binし、実行許可を与えます。

次に/home/[user-name]/.config/autostart/、起動時に実行するスクリプトを実行する.desktopファイルを作成します。

例:-スクリプトのファイル名を「example」または「example.sh」にします

次の行を含むgeditで.desktopファイルを作成し、filename.desktopとして保存します。 /home/[user-name]/.config/autostart/

[Desktop Entry]
Type=Application
Exec=sudo example
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name=myscript
Comment=Startup Script

ここで、Exec=sudo exampleまたは .desktopファイルへの実行許可の付与からExec=sudo example.shスクリプトをルートとして/usr/bin実行します。

現在、スクリプトは起動時に実行されます。


1
パスワードなしでsudoを実行するために、参照askubuntu.com/questions/39281/...
Pandya

感謝します。しかし、新興企業であれば、おそらく同じことをもう少し簡単にすることができます(私の答えを見てください)。
TuKsn

これはで完璧になる仕様へのリンク
erikbwork

.desktopファイルに実行可能フラグを付ける必要はないと思います。
ジュリアン

4

別の可能性:

でファイルを作成する $HOME/.config/upstart/my-upstart-script.conf

start on desktop-start
stop on desktop-end

script
  sudo fdisk -l > /home/[user-name]/upstart-test.txt        
end script

Upstartの詳細:

http://ifdeflinux.blogspot.de/2013/04/upstart-user-sessions-in-ubuntu-raring.html

http://upstart.ubuntu.com/cookbook/

sudoパスワードなしで実行する情報:

パスワードなしでsudoを使用してアプリケーションを実行する方法は?

パスワードなしで特定のsudoコマンドを実行するにはどうすればよいですか?


「$ HOME / .config / upstart」私のマシンにはそのようなディレクトリはありません。
カラマルカキッド

1
@KalamalkaKidどのUbuntuバージョンを使用していますか?upstartディレクトリはこの場所にある必要があります/home/yourusername/.config/upstart/
nautilusで

2

コマンドを実行するにはrootとしてのログイン、別の簡単なトリックがあります:

次の2つの手順が必要です。

  • ログイン時にトリガーファイルを作成する
  • トリガーファイルが存在する場合にのみ rootによって実行されるcronjobを作成し(に設定/etc/crontab)、小さなスクリプトを実行(コマンドを実行)します。トリガーファイルは同じスクリプトによって削除されるため、コマンドは1回だけ実行されます。

シーケンスは次のとおりです。

USER LOGIN > trigger file is created > cronjob runs script (with your command) and removes trigger file, > next time the script passes, since the trigger file does not exist anymore

セットアップ

2つの小さなスクリプト:

ログイン時にトリガーファイルを作成するもの:

#!/bin/sh
touch $HOME/.trigger

そして1つ2つはコマンドを実行します:

#!/bin/bash

FILE="/path/to/your/homedirectory/.trigger"
# don't use $HOME here, since you run it by root

if [ -f $FILE ]; then
   <your command here, run by root>
   rm -f $FILE
fi
  • 両方のスクリプトを2つの空のファイルにコピーし、create_trigger.shととして保存しますrun_command.sh
  • 便宜上、両方を実行可能にします。
  • 次のコマンドをスタートアップアプリケーションに追加します(ダッシュ>スタートアップアプリケーション>追加)。

    /path/to/create_trigger.sh
    
  • /etc/crontabファイルに次の行を追加します(sudo nano /etc/crontab):

    * * * * * root /path/to/run_command.sh
    

これで、定義されたコマンドは、ログインから1分以内に1回実行されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.