Jalankan skrip bash saat startup


18

Saya tahu pertanyaan ini telah ditanyakan sebelumnya, tetapi saya tidak dapat menemukan perbaikan untuk masalah saya, saya hanya tidak bisa menjalankan skrip saat startup. Ini skrip saya:

#!/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

Saya memasukkannya ke /etc/init.ddirektori

Memastikan itu dapat dieksekusi dengan menggunakan chmod 755 /etc/init.d/iptables.sh

Dan selesai touch /etc/rc3.d/S01iptables.sh

Tapi tidak ada :( ... Ada saran?

[Nov 2017] Jawaban yang diterima di sini harus dianggap usang, silakan lihat /raspberrypi//a/75057/5538

Jawaban:


12

[Silakan lihat catatan dalam pertanyaan tentang usangnya jawaban ini.]

Coba gunakan perintah ini untuk memastikan skrip Anda ditambahkan ke urutan boot:

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

Perhatikan bahwa Anda dapat membuat skrip dapat dieksekusi menggunakan opsi + x dengan chmod:

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

1
Ya update-rc.dperintahnya bekerja: D ... Saya pernah menggunakannya sebelumnya, tetapi ternyata hanya mengembalikan kesalahan, jadi saya mengabaikannya Lol ... Terima kasih atas bantuannya: D

5
Ini akan menjadi sudo update-rc.d nameofscript.sh defaults, setidaknya pada Jessie, untuk menghindari update-rc.d: error: initscript does not exist: /etc/init.d//etc/init.d/nameofscript.sh.
derFunk

Apakah skrip ini harus berakhir dalam waktu yang wajar? Atau dapatkah itu digunakan untuk memutar video hingga tak terbatas misalnya?
clankill3r

19

Anda juga dapat mengatur cronjob ( lihat tutorial ) untuk membuatnya berjalan saat startup

(sudo) crontab -e

hanya tambahkan sudojika skrip Anda membutuhkan hak pengguna super. Kemudian tambahkan ini ke crontab Anda:

@reboot /path/to/script.sh

Saya menggunakan metode ini untuk meluncurkan skrip dan mematikan semua akses ssh karena beberapa alasan. Saya harus memasang drive pada perangkat linux lain dan mengomentari baris crontab.
Phill Healey

6

Anda dapat menambahkan perintah skrip yang dapat dieksekusi ke bagian bawah .bashrcyang akan menjalankan skrip Anda setiap kali Anda masuk .

  1. Pastikan Anda berada di pifolder:

    $ cd ~
    
  2. Buat file dan tulis skrip untuk dijalankan di file:

    $ sudo nano superscript
    
  3. Simpan dan exit: Ctrl+ X, Y,Enter

  4. Buka .bashrcuntuk konfigurasi:

    $ sudo nano .bashrc
    
  5. Gulir ke bawah ke bawah dan tambahkan baris: ./superscript

  6. Simpan dan exit: Ctrl+ X, Y,Enter


Jika Anda mencari solusi yang berfungsi saat boot ke konsol , lihat tautan ini . Ikhtisar dasar:

  1. Buat file untuk skrip startup Anda dan tulis skrip Anda di file:

    $ sudo nano /etc/init.d/superscript
    
  2. Simpan dan exit: Ctrl+ X, Y,Enter

  3. Jadikan skrip dapat dieksekusi:

    $ sudo chmod 755 /etc/init.d/superscript
    
  4. Daftarkan skrip untuk dijalankan saat startup:

    $ sudo update-rc.d superscript defaults
    

Jika Anda ingin skrip dijalankan ketika Anda boot ke lingkungan LXDE , Anda bisa melihat posting forum Raspberry Pi ini :

  1. Navigasi ke ~/.config/lxsession/LXDE-pi

  2. Buka autostartfile di folder itu:

    $ sudo nano autostart
    
  3. Tambahkan @bash /path/to/scriptname &pada baris baru. Jika Anda ingin menjalankan sesuatu seperti skrip python, letakkan sesuatu seperti @python mypython.pydi baris baru. Menjalankan file skrip mungkin @./superscript, tetapi karena beberapa alasan skrip berjalan dalam loop tak terbatas (mungkin ini akan menghentikannya).

  4. Simpan dan exit: Ctrl+ X, Y,Enter

  5. Mulai ulang Raspberry Pi Anda ke lingkungan LXDE.

diambil dari Execute script pada saat start-up


1

Saya biasanya hanya menambahkan baris untuk mengeksekusi skrip /etc/rc.local, misalnya /path/to/my/script.sh &, sebelum baris terakhir yang ada exit 0. Saya menambahkan "&" untuk mengirim skrip ke latar belakang kalau-kalau tidak kembali, jika tidak perintah berikutnya tidak akan dieksekusi.

Jadi dalam kasus Anda, saya hanya akan menambahkan dua baris

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

di akhir /etc/rc.localsesaat sebelumnya exit 0.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.