起動時にbashスクリプトを実行する


18

この質問は以前に尋ねられたことは知っていますが、問題の修正方法が見つからず、起動時にスクリプトを実行できません。これが私のスクリプトです。

#!/bin/bash
iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT 
iptables -A OUTPUT -m state --state NEW -p tcp --sport 22 -j ACCEPT

私はそれを/etc/init.dディレクトリに入れました

を使用して実行可能ファイルがあることを確認しました chmod 755 /etc/init.d/iptables.sh

そして完了 touch /etc/rc3.d/S01iptables.sh

しかし、何も:( ...何か提案?

[2017年11月]ここで承認された回答は廃止されたと見なされる必要があります。https://raspberrypi.stackexchange.com/a/75057/5538を参照してください

回答:


12

[この回答の陳腐化に関する質問の注記を参照してください。]

このコマンドを使用して、スクリプトがブートシーケンスに追加されていることを確認してください。

sudo update-rc.d /etc/init.d/nameofscript.sh defaults

chmodで+ xオプションを使用して、スクリプトを実行可能にできることに注意してください。

chmod +x /etc/init.d/nameofscript.sh

1
うんupdate-rc.dコマンドが働いた:D ...私は前にそれを使用するが、私は笑それを無視して、単にエラーを返すように見えた...助けてくれてありがとう:D

5
sudo update-rc.d nameofscript.sh defaults回避するのは、少なくともJessieではそうでしょうupdate-rc.d: error: initscript does not exist: /etc/init.d//etc/init.d/nameofscript.sh
derFunk

このスクリプトは妥当な時間内に終了する必要がありますか?または、たとえば無限のビデオをループするために使用できますか?
clankill3r

17

起動時に実行するようにcronjobを設定することもできます(チュートリアルを参照)。

(sudo) crontab -e

sudoスクリプトにスーパーユーザー特権が必要な場合にのみ追加してください。次に、これをcrontabに追加します。

@reboot /path/to/script.sh

このメソッドを使用してスクリプトを起動し、何らかの理由ですべてのsshアクセスをシャットダウンしました。ドライブを別のLinuxデバイスにマウントし、crontab行をコメントアウトする必要がありました。
フィルヒーリー

6

あなたはの底にスクリプト実行コマンドを追加することができ.bashrcますそのスクリプトあなたは、ログインするたびに実行します

  1. piフォルダー内にいることを確認します。

    $ cd ~
    
  2. ファイルを作成し、そのファイルで実行するスクリプトを作成します。

    $ sudo nano superscript
    
  3. 保存して終了:Ctrl+ XYEnter

  4. .bashrc設定のために開きます:

    $ sudo nano .bashrc
    
  5. 下にスクロールして、次の行を追加します。 ./superscript

  6. 保存して終了:Ctrl+ XYEnter


コンソールの起動時に機能するソリューションをお探しの場合は、このリンクをご覧ください。基本的な要約:

  1. スタートアップスクリプト用のファイルを作成し、ファイルにスクリプトを記述します。

    $ sudo nano /etc/init.d/superscript
    
  2. 保存して終了:Ctrl+ XYEnter

  3. スクリプトを実行可能にします。

    $ sudo chmod 755 /etc/init.d/superscript
    
  4. 起動時に実行するスクリプトを登録します。

    $ sudo update-rc.d superscript defaults
    

LXDE環境を起動するときにスクリプトを実行したい場合は、このRaspberry Piフォーラムの投稿をご覧ください

  1. 案内する ~/.config/lxsession/LXDE-pi

  2. autostartそのフォルダー内のファイルを開きます。

    $ sudo nano autostart
    
  3. @bash /path/to/scriptname &新しい行を追加します。pythonスクリプトのようなものを実行したい場合@python mypython.pyは、新しい行に何かを置きます。スクリプトファイルの実行はになります@./superscriptが、何らかの理由でスクリプトが無限ループで実行されます(おそらくこれで停止します)。

  4. 保存して終了:Ctrl+ XYEnter

  5. Raspberry PiをLXDE環境に再起動します。

起動時にスクリプトを実行から取得


1

通常、スクリプトを実行する行を追加します。/etc/rc.localたとえば/path/to/my/script.sh &、最後の行の前exit 0です。スクリプトが戻らない場合にスクリプトをバックグラウンドに送信するために「&」を追加しました。そうしないと、次のコマンドが実行されません。

だからあなたの場合、私は単に2行を追加します

iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT 
iptables -A OUTPUT -m state --state NEW -p tcp --sport 22 -j ACCEPT

/etc/rc.local直前の終わりにexit 0

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.