起動時またはブート時にシェルスクリプトを実行する

起動時またはブート時にシェルスクリプトを実行する

簡単に言えば、私の問題は、コンピューターを使用するたびにスクリプトを実行する必要があるため、プロセスを少し自動化しようとしていることです。

私のシステムには、nvidia gt540m vga カードが搭載されています。このカードはデュアルです。要求の厳しいタスク用にハイエンドのカードが 1 枚搭載されており、その他の作業にはローエンドのオンボード カードを使用します。

現時点では、Ubuntu はこのタイプの VGA カードをサポートしておらず、オンボードのカードのみを使用する場合でも、常に両方に電力を供給します。

その結果、バッテリーの寿命が非常に短くなります。

私は Ubuntu を使い始めたばかりなので、実際に問題を解決するためのスクリプトを見つける前に、大量のチュートリアルに従う必要がありました。

acpi_call フォルダを /home/anpel ディレクトリにダウンロードし、次のコマンドでカードを強制終了します。

cd /acpi_call
sudo insmod acpi_call.ko
sudo ./test_off.sh

次のステップは、起動するたびにコマンドを手動で実行する必要があったため、デスクトップにシェル スクリプトを作成し、それを実行するとパスワードの入力が求められ、入力するとカードが削除されます。スクリプトは次のようになります。

cd ~/acpi_call
sudo insmod acpi_call.ko
sudo ./test_off.sh
echo VGA card dead
exit

現在、コンピュータが起動するたびにこのスクリプトがシステムで実行されるようにして、毎回手動で実行しなくても済むようにしています。

少なくとも何らかのガイダンスなしにシステムに何かを変更する経験はありません。すべてを台無しにしてしまう可能性が高いと思うし、混乱を解消する方法もわからないので、実際に何も試していませんが、/etc/rc.local ファイルにスクリプトを追加すれば問題が解決すると読んだことがあります。

それは本当ですか、それとも他に試すべきことがあるのでしょうか?

- - 編集 - - -

私は Ubuntu 11.10 を使用しています。そのことについては言及していなくて申し訳ありません。

答え1

起動時に実行されるスクリプトの正しい場所は、/etc/rc.localからスクリプトを呼び出すことです。

ファイル内のコメントは次のように要約されます。

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

答え2

スクリプト ファイルをスタートアップ アプリケーションとして実行できます (Ubuntu 10.04 LTS ではシステム - 環境設定 - スタートアップ アプリケーション - 11.10 で同等のものがどこにあるかは不明)。

たとえば、inosync起動時にユーティリティを実行するには、スタートアップアプリケーションに次のエントリを追加します。

Name=inosync
Command=/home/toaster/inosync.sh
Comment=Mirror DataDisk to Barracuda_01 

bash スクリプト ファイルinosync.shの実行を有効にする必要があります。これを行うにはsudo nautilus、ターミナルでファイルに移動し、右クリックして [プロパティ] を選択し、[アクセス許可] タブに移動して [ファイルをプログラムとして実行できるようにする] をオンにします。

関連情報