web-dev-qa-db-ja.com

起動時にスクリプトを実行する方法の違い

how to run script at startupに関するさまざまな質問を読みましたが、違いが何であるか、GUIなしでそれを行う正しい方法は何なのかよくわかりません。

  • /etc/rc.local
  • @rebootを使用したcronジョブ
  • ~/.profile
  • /.bash_profile
  • /.bash_login

起動時に実行する必要がある例

  • apt-get update
  • いくつかの許可を設定する
  • ディスプレイの明るさを設定する
  • numlockをオンにする
  • タッチパッドのセットアップ
  • いくつかのアプリを実行する
  • ルートとしていくつかのスクリプトを実行します(メインスクリプトが既にルートとして実行されている場合でも、Sudoを使用して呼び出す必要がありますか?)
  • ルートなしでいくつかのスクリプトを実行する

これらすべてを1つのファイルで処理する1つのスクリプトがあればいいのですが。適切に行う方法

3
Sebastian

~/.profile/.bash_profile、および/.bash_loginは、スクリプトを実行するよりも、環境変数を定義して環境を設定するのに適しています。これらはお勧めしません。

/etc/rc.localはそのために使用できますが、GUIが起動する前に起動することに注意してください。 GUIに通知のみを送信するスクリプトの場合を除きます。 /etc/rc.localの形式で/full/path/to/script &からスクリプトを呼び出す必要があることに注意してください(実行中に他のスクリプトがブロックされないように、&)。また、スクリプト自体またはexport DISPLAY=:0内に/etc/rc.local変数が必要です。 GUIを必要とするアプリには、この変数が存在する必要があります。 cron job using @rebootでも同じ考えです。

GUIログインでスクリプトを実行する場合、適切な方法は、.desktopフォルダー内の各スクリプトに対して~/.config/autostart/ファイルを作成することです。手作業で行うことも、まったく同じことを行うスタートアップアプリケーションアプリを使用することもできます。 Unity Dashを開き、「スタートアップアプリケーション」と入力するだけです。

例の概要

  • apt-get updateはGUIを必要とせず、ネットワークのみを必要とします。 /etc/rc.localはこれで問題ありません。
  • set some permissions、これもGUIを必要としません。単に/etc/rc.localを使用してください
  • set display brightnessもGUIを必要としませんが、root privillegeを必要とする場合があります。ログインする前に変更したい場合は、特別なファイルに書き込む必要があります。相談 私の他の投稿 この件について
  • turn numlock onはGUIを必要としない場合もあります
  • setup touchpadはメソッドに応じて、GUIが必要な場合と必要でない場合があります
  • run some apps GUIアプリの場合、上記のスタートアップアプリケーションから起動する必要があります。
  • run some scripts as rootには、/etc/rc.localまたはcronを使用できます。 GUIアプリをルートとして実行することは多くの理由で悪い考えなので、それを避けてください。
  • run some scripts without rootは、スタートアップアプリケーションメソッドを使用します。
5