Bash Script on Startup? (Linux)

12

Apakah ada cara untuk membuat / menjalankan skrip bash saat reboot (seperti di Debian / Ubuntu misalnya, karena itulah yang dimiliki oleh 2 kotak saya di rumah)

Juga, ada panduan yang direkomendasikan untuk melakukan pekerjaan cron? Saya benar-benar baru bagi mereka (tetapi mereka akan sangat bermanfaat)

msmith1114
sumber

Jawaban:

21

Di Ubuntu / Debian / Centos Anda dapat mengatur tugas cron untuk menjalankan @reboot. Ini berjalan sekali saat startup sistem. Gunakan crontab -e untuk mengedit crontab dan menambahkan baris seperti contoh di bawah ini misalnya

@reboot /path/to/some/script 

Ada banyak sumber daya untuk cron jika Anda mencarinya. Situs ini memiliki beberapa contoh bagus.


sumber
7

Cara khas lain untuk memulai sesuatu saat boot pada banyak platform * nix adalah (atau, saya pikir ini mungkin mulai tidak disukai - lihat alternatif ) untuk meletakkan skrip di direktori yang, tergantung pada OS / distribusi tertentu, mungkin sesuatu seperti /etc/rc2.d, /etc/rc3.d, /etc/rc/rc3.d, atau sejenisnya (distribusi yang berbeda menggunakan berbeda "tingkat run", yang mana nomor tersebut berasal dari - lihat link di bawah). Seringkali, ini juga disinkronkan ke dalam atau di file dari /etc/init.d, untuk eksekusi lebih mudah dengan tangan, dan mereka mengambil argumen "mulai" dan / atau "berhenti" di sebagian besar platform * nix, dan juga "status", "restart", dll pada banyak platform linux. Pada sistem seperti itu, ini umumnya dijalankan oleh init,inittab. Pada sistem * BSD, ada gaya berbeda dari konsep yang sama , dan, seperti yang ditautkan di atas, ada banyak variasi.

Dalam gaya di atas, skrip dalam, misalnya, /etc/rc2.d(untuk sistem dengan runlevel default 2) biasanya dimulai dengan huruf Satau K, dan kemudian nomor dua digit. Skrip yang dimulai dengan S dijalankan dalam urutan leksikografis (yang diterjemahkan, secara umum, menjadi urutan numerik) saat booting, ke level 2, dengan argumen "mulai". Saat dimatikan, skrip yang diawali dengan K juga dijalankan, dengan argumen "berhenti".

File dalam /etc/init.d(atau kadang-kadang /etc/rc/init.d, atau variasi lainnya) dinamai tanpa awalan S dan K, atau angka numerik. Biasanya, file-file di berbagai direktori /etc/rc?.d dirujuk ke file-file asli, sering dirujuk melalui awalan jalur relatif ../init.d/.

Berbagai utilitas ada di berbagai sistem untuk mengelola ini, juga, menghidupkan dan mematikan hal-hal, dll. Pada IRIX (sejak IRIX 4, setidaknya, jika ingatanku), dulu alat yang disebut chkconfig, yang tidak akan memanipulasi tautan, tetapi yang akan diperiksa oleh skrip untuk melihat apakah harus berjalan atau tidak. Saya pikir IRIX adalah OS pertama yang memiliki sesuatu seperti ini. Kemudian, dalam beberapa versi RedHat yang dulu saya miliki, ada alat dengan nama yang sama, tetapi berperilaku sedikit berbeda, sebenarnya mengelola symlink - lihat chkconfig(8)apa yang saya pikir kemungkinan versi yang sama (atau sangat mirip) seperti yang saya gunakan saat itu.

Pada sistem Ubuntu 9.04 saya memiliki akses, sepertinya update-rc.dskrip untuk dijalankan.

Jika Anda menggunakan sistem yang menggunakan inittab, Anda juga dapat menambahkan hal-hal secara langsung di sana - yang dapat sangat berguna untuk hal-hal yang ingin Anda jalankan tidak hanya sekali saat boot, tetapi juga telah secara aktif dipantau ( jika init) respawnjika mereka pernah crash atau terminasi. Lihat output man inittab(jika Anda memilikinya) pada sistem Anda untuk informasi tambahan. Dan / atau man init, dll. Ada banyak rasa yang berbeda, dan saya (saat ini) tidak terlalu akrab dengan Debian atau Ubuntu, jadi saya tidak yakin apa yang harus Anda tunjukkan, tapi mudah-mudahan ini memberi Anda beberapa titik awal .

bagian @reboot di crontob baru bagi saya, tetapi juga sepertinya ini merupakan opsi yang berguna - meskipun saya menyarankan skrip init lebih disukai untuk banyak hal. Tetapi lihat man 5 crontablebih banyak info tentang apa yang dapat Anda masukkan dalam konfigurasi cron Anda, dan bagaimana hal itu dapat diperintahkan untuk menjalankan sesuatu, dan kapan (termasuk, dengan asumsi versi cron [lihat cron ] Vixie / ISC dengan @reboot).

Saya harap itu membantu.

lindes
sumber