/etc/rc.local
だから私はスクリプトを実行しようとしましたが、何も機能しないようです。手動で実行できservice rc.local start
、ホームディレクトリのファイルに「hi」と表示されますが、再起動時には実行されません。正しい権限がすべて設定され、リンクが正しいrc#.dディレクトリに存在するようです。参考までに、関連情報は次のとおりです。
# ls -l /etc/rc.local
-rwxr-xr-x 1 root root 45 Apr 12 21:10 /etc/rc.local
# ls -l /etc/init.d/rc.local
-rwxr-xr-x 1 root root 812 Apr 12 21:00 /etc/init.d/rc.local
# for i in {0..6}; do cd rc$i.d ; pwd; ls -l |grep rc.local; cd ..; done
/etc/rc0.d
lrwxrwxrwx 1 root root 18 Apr 12 20:53 K20rc.local -> ../init.d/rc.local
/etc/rc1.d
lrwxrwxrwx 1 root root 18 Apr 12 20:53 K20rc.local -> ../init.d/rc.local
/etc/rc2.d
lrwxrwxrwx 1 root root 18 Apr 12 20:53 S20rc.local -> ../init.d/rc.local
/etc/rc3.d
lrwxrwxrwx 1 root root 18 Apr 12 20:53 S20rc.local -> ../init.d/rc.local
/etc/rc4.d
lrwxrwxrwx 1 root root 18 Apr 12 20:53 S20rc.local -> ../init.d/rc.local
/etc/rc5.d
lrwxrwxrwx 1 root root 18 Apr 12 20:53 S20rc.local -> ../init.d/rc.local
/etc/rc6.d
lrwxrwxrwx 1 root root 18 Apr 12 20:53 K20rc.local -> ../init.d/rc.local
# cat /etc/rc.local
#! /bin/bash
echo hi > ~user/test
exit 0
削除し/etc/rc.local
て/etc/init.d/rc.local
実行してupdate-rc.d rc.local remove
から復元し、次のupdate-rc.d rc.local defaults
質問のように実行してみました。rc.localは実行されません。それは無駄です。
再起動または初期化レベルを入力しても機能しません。 shebang行が#! /bin/sh -e
または場合は機能しません#! /bin/bash
。ただし、手動で実行すると、/etc/rc.local
スクリプトが/etc/init.d/rc.local
別のファイルにエコーされるようにすることができます。
だから私の質問は...私が何を間違っているのか、どのようにrc.localを実行させるのかということです。また、代替(例:スタートアップ)について聞くことは大丈夫ですが、rc.localをどのように機能させるかを示す(または見つけるのに役立つ)答えだけを受け入れます(そして何が間違っているかを教えることをお勧めします)。
その価値に関する追加情報は次のとおりです。
# dmesg | grep "Linux version"
[ 0.000000] Linux version 3.5.0-17-generic (buildd@allspice) (gcc version 4.7.2 (Ubuntu/Linaro 4.7.2-2ubuntu1) ) #28-Ubuntu SMP Tue Oct 9 19:31:23 UTC 2012 (Ubuntu 3.5.0-17.28-generic 3.5.5)
# cat /proc/version
Linux version 3.5.0-17-generic (buildd@allspice) (gcc version 4.7.2 (Ubuntu/Linaro 4.7.2-2ubuntu1) ) #28-Ubuntu SMP Tue Oct 9 19:31:23 UTC 2012
# lsb_release -a
No LSB modules are available.
Distributor ID: LinuxMint
Description: Linux Mint 14 Nadia
Release: 14
Codename: nadia
ベストアンサー1
問題は次の行にあります。
echo hi > ~user/test
~user
予想したほど拡張できません。rc.local
実行中であるが予期しない拡張のため、権限のない場所に書き込もうとします。
以下を試してください。
echo ~user/test > /dev/shm/test
その後、内容を確認してください/dev/shm/test
。これによりrc.local
、実際に実行中であり、~user
拡張範囲が何であるかがわかります。
それにもかかわらず、私が提案するのは、外部環境に頼るのではなく、明示的なパスを使用することです。