Jalankan skrip shell pada startup Ubuntu

1

Saya memiliki skrip shell yang berjalan pada jvm, berfungsi saat saya menulis: sh /opt/bin/myshel.sh Saya menambahkan skrip shell ke /etc/inti.d dengan detail ini:

#! /bin/sh
### BEGIN INIT INFO
# Provides:          WSO2Services.sh
# Required-Start:    $local_fs
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

/opt/bin/myshel.sh

Saya menyimpan file ini sebagai "myShell.sh" di "/etc/init.d" dan mengubah modenya menjadi executable. Dan saya juga biasa sudo update-rc.d myShell.sh defaultsmemperbarui file "rc * .d". Masalahnya adalah itu tidak berjalan saat reboot.

Reza Ameri
sumber

Jawaban:

1

Cara termudah untuk mengeksekusi sesuatu ketika boot adalah dengan meletakkannya di /etc/rc.local. Jika Anda ingin menulis skrip init Sys V lengkap, Anda mungkin ingin menggunakan skrip yang ada sebagai templat. Anda mungkin juga ingin mempertimbangkan untuk menggunakan pekerjaan pemula.


sumber
Saya benar-benar tidak bisa mengerti apa yang Anda katakan saya benar-benar naif!
Reza Ameri
2
Tambahkan /opt/bin/myshel.sh ke /etc/rc.local dan lihat apakah dijalankan ketika reboot.
1
@RezaAmeri: Tidak. Cukup tambahkan baris di akhir skrip rc.local untuk memanggil scipt Anda ( /opt/bin/myshell.sh).
Benar
1
@ Benar maksudmu setelah keluar 0? Atau setelah komentar dan sebelum keluar 0? Atau mungkin saya harus menghapus keluar 0 dan menambahkan /opt/bin/myshell.sh? Terimakasih atas bantuannya.
Reza Ameri
1
@RezaAmeri: Saya tidak punya exit 0, tapi tentu saja sebelum itu.
Benar
1

Pada awalnya periksa /etc/inittabfile. Ada garis seperti id:2:initdefaultJadi itu akan mulai pada runlevel 2(dalam kasus saya). Jadi ini akan mulai boot: /etc/init.d/rc 2. Jadi semua skrip yang memulai S ## somename (# adalah angka desimal) /etc/rc2.dakan dijalankan. Ini adalah tautan simbolis ke skrip di /etc/init.d.

Jadi hal serupa harus dilakukan dalam kasus Anda. Jika runlevel Anda 2kemudian buat symlink di /etc/rc2.d/S##myshell.sh ke skrip di ../init.d/myshel.sh. Kemudian akan berjalan saat boot. Ingat skrip yang memiliki level skrip yang sama (dua angka desimal setelah S) berjalan paralel.

Saya menyarankan Anda untuk memeriksa file di /etc/init.d seperti apa tampilannya, argumen apa yang harus didukung.

Benar
sumber
2
Itulah yang update-rc.d [name] defaultsdilakukannya
glenn jackman
@glennjackman: Saya tidak tahu itu. Terima kasih!
Benar
Masalah saya persis adalah kerangka file di init.d. Saya ingin membuat file di init.d yang menjalankan shell saya dan memiliki kerangka standar.
Reza Ameri