Pertanyaan ini telah ditanyakan beberapa kali sebelumnya, tetapi sepertinya saya tidak membuatnya bekerja menggunakan informasi yang ada.
Pi saya menjalankan Raspbian. Saya memiliki skrip Python bernama dnscheck.py yang berulang selamanya.
Saya perlu menjalankannya saat boot. Saya tahu saya harus membuat file .sh yang berisi sesuatu seperti
sudo python dnscheck.py &
Apa yang saya tidak tahu adalah di mana file ini seharusnya atau apakah itu harus mengandung yang lain. Saya tahu tentang folder init.d, tetapi melihat contoh kerangka yang saya bayangkan seharusnya ada cara yang lebih sederhana untuk melakukan tugas sederhana ini.
Jawaban:
Jika Anda ingin mengontrol proses dengan perintah seperti start, stop, restart dll menggunakan skeleton skrip dan ubah untuk tujuan Anda mungkin merupakan opsi terbaik.
Jika Anda hanya ingin memulai proses, masukkan perintah
/etc/rc.local
. (Saya tidak punya RPi di tangan, tetapi saya membaca secara online bahwa ada garis 'keluar 0' di sana, Anda harus meletakkan perintah Anda di atas garis ini)sumber
rc.local
root. Anda juga harus menentukan path lengkap ke skrip. Anda juga harus menambahkan&
di bagian akhir sehingga skrip memotong, misalnya/path/to/foobar.py &
.&
? Karena ketika saya gunakan tanpanya, semuanya tetap berfungsi seperti yang diharapkan.Pindahkan skrip Anda (kami akan menyimpannya ke file
dnscheck
) ke/etc/init.d/
, dan atur izin agar dapat dijalankan:Tambahkan tag init LSB ke bagian atas skrip Anda. Anda mungkin ingin mengubah Diperlukan-Mulai / Berhenti dan Tag Deskripsi agar sesuai skrip Anda.
Kemudian buat tautan simbolik dengan menjalankan
sumber
/etc/rc.local
tidak cukup.Ada banyak cara untuk melakukan ini, tentu saja, tetapi jangan lupa gunakan
cron
. Jika Anda meletakkan@reboot
baris di crontab Anda, perintah itu akan dieksekusi pada setiap restart.Untuk mengujinya, saya baru saja menambahkan baris berikut ke crontab pengguna saya dengan
crontab -e
:@reboot echo "$(date)" >> ~/boot.txt
Bonus untuk metode ini adalah Anda dapat memanggil pekerjaan seperti yang diminta pada interval lain selain waktu boot, dan Anda tidak perlu mengedit skrip init.sumber
jika Anda menggunakan file rc.local, ini mungkin berguna untuk pemecahan masalah. Anda dapat menambahkan baris logging ke kesalahan log (stderr) dan output perintah (stdout) ke file log. Menurut contoh ini file tersebut disimpan di /tmp/rc.local.log
Baca lebih lanjut
sumber
Saya benar-benar terkejut bahwa daemontools DJJ tidak disebutkan di sini. Daemontools melakukan pengawasan proses yang tepat dan Anda dapat menambahkan fitur keren seperti logging yang diputar secara otomatis. TL; DR jika Anda tidak terbiasa dengan semua ini, proses Anda akan dimulai kembali setiap kali gagal dan mulai secara otomatis ketika Pi Anda menyala. Ini bagus jika Anda menulis program python yang buruk yang memiliki mode kegagalan tetapi Anda tidak ingin hanya mati jika terjadi kesalahan.
Memasang:
Kemudian ikuti langkah-langkah untuk membuat proses yang di-daemonisasi:
Ini sebagian besar sesederhana menyalin
run
skrip ke/etc/service/<my_custom_service_name>
merembes lain: Anda dapat berjalan sebagai pengguna atau root! Detail dalam tautan.FWIW Saya memiliki proyek Pi di mana saya memiliki 3 proses python berbeda (masing-masing memiliki loop eksekusi menggunakan waktu CPU sehingga dengan menggunakan 3 proses saya memungkinkan setiap proses untuk memanfaatkan 1 inti CPU). Daemontools memungkinkan saya untuk memastikan ketiga secara otomatis akan berjalan dan tetap berjalan setelah saya terhubung dengan Pi.
sumber
Inilah solusi yang saya gunakan secara konstan.
Buat file desktop
ketik berikut ini ke dalamnya
rekatkan file ini ke dalam
dan restart pi raspberry Anda dan itu akan secara otomatis menjalankan program Anda di terminal baru
sumber
Untuk menggunakan file .py, cukup letakkan baris
#!/usr/bin/python
di bagian paling awal file Anda. Kemudian membuatnya bisa dieksekusi denganchmod +x filename
. Selanjutnya, tambahkan baris/path/to/file.py &
ke/etc/rc.local
sebelumexit 0
baris (bertukar/path/to/file.py
dengan path ke skrip Anda). Ini akan membuat skrip python Anda mengeksekusi di akhir boot.sumber
Inilah metode yang bahkan lebih mudah untuk saya. Ubah autostart di LXDE.
Buka terminal dan edit file autostart sebagai berikut:
tambahkan baris teks berikut ke bawah (ubah jalur seperlunya ke tempat example.py Anda berada)
ctr-x, dan simpan. Anda mungkin perlu membuat skrip python dieksekusi sebagai berikut:
referensi untuk autostart di LXDE dan referensi untuk membuat python dieksekusi
sumber
solusi ini tidak berhasil untuk saya mencoba memulai skrip python dengan menjalankan Feh. Berikut ini berhasil. Ini memulai skrip setelah login.
Buka sesi terminal dan edit file
sudo nano /etc/profile
Tambahkan baris berikut ke akhir file
/home/pi/your_script_name.sh
ganti nama skrip dan jalur dengan nama dan jalur skrip start-up yang benar. Simpan dan keluar
Tekan Ctrl + X untuk keluar dari editor nano diikuti oleh Y untuk menyimpan file.
Begini tampilannya script.sh saya:
Saya pikir saya membuat script.sh dan script.py dieksekusi menggunakan chmod
sumber