Ubuntu 15.04には次のファイルがあります。/usr/local/bin/myscript(私が作ったスクリプトです。)
マイアカウントでこのコマンドを実行すると、rootとして実行するために必要な操作が実行されます。sudo /usr/local/bin/myscript
今やりたい/usr/local/bin/myscriptコンピュータの起動時にルートとして実行されます(パスワードを入力せずにsudoコマンドを実行するのと同じ)。 Ubuntu 15.04ではどうなりますか?
答え1
今systemdに答えがあります。
Ubuntuバージョン15を使用しています。あなたは体系化しました。 /etc/rc.local
せいぜいsystemdの以前のバージョンとの互換性メカニズムです。以下のハイパーリンクでリンクされたAskUbuntuの質問に表示されている混乱を使用すると、ひどく間違っている可能性があります。したがって、適切なシステムサービスユニットを作成してください。
/etc/systemd/system/
ローカル、非システム、および非パッケージのサービスユニットを作成するので、そのタイプのユニットがある場所にユニットファイルが配置されます。ただそう呼んでください/etc/systemd/system/myscript.service
。これには以下が含まれます。
[単位] 説明=user2580のスクリプト ドキュメント=https://unix.stackexchange.com/questions/202698/ [提供する] タイプ=シンプル ExecStart=/usr/local/bin/myscript [インストールする] WantedBy =マルチユーザー。ターゲット
スクリプトが「デーモン用」に分岐している場合は、そうしないようにしてください。それは完全に不要です。
systemctl preset myscript.service
起動時に自動的に起動するには、スーパーユーザーとして実行してください。systemctl start myscript.service
手動で起動するには、今すぐ実行(スーパーユーザーとして)してください。- 実行し
systemctl status myscript.service
てステータスを確認してください。
Xサーバーと通信できるコンテキストではスクリプトは実行されません。 Xサーバーが起動する前に実行することもできます。ただし、Xクライアントになるための要件については言及しておらず、HOME
初心者には複雑な環境変数やその他の問題についても言及していません。とにかく、これらは他の質問のトピックです。だから私はそのままにします。
追加読書
- https://unix.stackexchange.com/a/200281/5132
- ジョナサン・ドボイン・ポラード(2001)。 「単に「デーモンを背景に置く」ためにフォーク()を使用しないでください。」。 Unixデーモンを設計する際に避けるべき間違い。一般的な答え。
答え2
.NETでスクリプトを呼び出す行を追加するだけです/etc/rc.local
。このファイルは最後のinitスクリプトの実行です。
/etc/rc.local
実行可能でルートが所有していることを確認してください。
答え3
あなたはそれを使用することができますgksudo
:-
NAME
gksu - GTK+ frontend for su and sudo
DESCRIPTION
gksu is a frontend to su and gksudo is a frontend to sudo. Their primary purpose is to run graphical commands
that need root without the need to run an X terminal emulator and using su directly.
- スタートアップアプリを開きます(システム設定>スタートアップアプリまたは
gnome-session-properties
)。 - 次のコマンドを使用して新しいエントリを追加します(
gksudo myscript
またはgksudo /usr/local/bin/myscript
):-
[追加]をクリックすると、デスクトップの起動/ログイン時にこのスクリプトが実行されます。
メモ:-gksu
使用する前にインストールされていることを確認してくださいgksudo
。 (経由でインストールできますsudo apt-get install gksu
)
別の方法は、次のように動作するAskpassプログラムを使用することですsudo -A
。
-A, --askpass
Normally, if sudo requires a password, it will read it from the user's terminal. If the -A
(askpass) option is specified, a (possibly graphical) helper program is executed to read the user's
password and output the password to the standard output. If the SUDO_ASKPASS environment variable
is set, it specifies the path to the helper program. Otherwise, if sudo.conf(5) contains a line
specifying the askpass program, that value will be used. For example:
# Path to askpass helper program
Path askpass /usr/X11R6/bin/ssh-askpass
zenity
Askpassヘルパーとして使用する例です。