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.

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.


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.


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
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.