rc.localを自動的に実行させる方法はありません。

rc.localを自動的に実行させる方法はありません。

/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拡張範囲が何であるかがわかります。

それにもかかわらず、私が提案するのは、外部環境に頼るのではなく、明示的なパスを使用することです。

おすすめ記事