web-dev-qa-db-ja.com

起動時にスクリプトを実行するにはどうすればよいですか?

フォルダーにスクリプトがあります:

/path/to/my/script.sh

このスクリプトは、システムが起動するたびに実行する必要があります(システムに誰もログインしていない場合でも)。これを実現するために何をする必要がありますか?

108
Rusty

以下の場合は、root権限が必要です。ルートを取得するには、ターミナルを開いてコマンドを実行します

Sudo -i

コマンドプロンプトは「#」に変わり、端末セッションにルート権限があることを示します。

代替#1:/etc/rc.localにコマンドを追加する

vi /etc/rc.local

次のようなコンテンツ:

# This script is executed at the end of each multiuser runlevel
/path/to/my/script.sh || exit 1   # Added by me
exit 0

代替方法2:Upstartジョブを追加する(15.04より古いシステムの場合)

/etc/init/myjob.confを作成します

vi /etc/init/myjob.conf

次のようなコンテンツで

description     "my job"
start on startup
task
exec /path/to/my/script.sh

代替方法3:初期化スクリプトを追加する(廃止)

/etc/init.d/myscriptに新しいスクリプトを作成します。

vi /etc/init.d/myscript

(明らかに「myscript」と呼ばれる必要はありません。)このスクリプトでは、やりたいことを何でもします。おそらく、あなたが言及したスクリプトを実行するだけです。

#!/bin/sh
/path/to/my/script.sh

実行可能にします。

chmod ugo+x /etc/init.d/myscript

起動時にこのスクリプトを実行するようにinitシステムを構成します。

update-rc.d myscript defaults
133
jdthood

ルートは必要ありませんし、ログインする必要もありません。

Crontab(crontab -e)を編集して、次のようなエントリを作成できます。

@reboot /path/to/script.sh

これにより、通常のユーザーとして実行できます。 @rebootは、コンピューターの起動時に実行されることを意味します(必ずしも再起動したときだけではありません)。

56
Dan Jones

ターミナルから

  1. newshell.sh.desktopフォルダーに~/.config/autostartファイルを作成します。

    gedit ~/.config/autostart/newshell.sh.desktop
    
  2. ExecName、およびCommentの値を変更し、ファイルに追加:最初の行

     [Desktop Entry]
     Type=Application
     Exec=/full/link/to/your/newshell.sh
     Name=newshell
     Comment=whatever you want
    
  3. セーブ

または

gUIから実行できます。

  1. ubuntu 14.04で「スタートアップアプリケーション」ツールを実行し、検索ボックスに書き込むだけです。
  2. 同じExecName、およびCommentを追加します。
13
ChaosPredictor

あなたの家には、.bashrcという名前のファイルがあります。このファイルは、セッションの開始時に実行されます。

ファイルの最後に次のようなものを置いてください:

sh /path/to/your/script.sh

編集:申し訳ありませんが、ユーザーがログインしたときに私の解決策が実行されるため、あなたの質問には答えませんでした...

ログインする前に何かを実行するには、rcconfまたはrc-fileを試してください: http://www.debianadmin.com/manage-linux-init-or-startup-scripts.html

2
Gp2mv3