Saya ingin menjalankan .sh
file menggunakan bash pada logout dan shutdown Ubuntu. Saya telah mencari ke atas dan ke bawah web dan hanya menemukan perbaikan untuk KDE dan GNOME. Skripnya sederhana, saya hanya perlu tahu apakah saya bisa menambahkan baris kode ke file "logoff / shutdown" atau jika saya perlu referensi di skrip lain.
30
systemd
) sehingga orang akan melihatnya di atas.Jawaban:
Untuk menjalankan skrip saat keluar:
Tambahkan baris berikut:
dalam
/etc/lightdm/lightdm.conf
file.Anda harus memulai ulang lightdm agar perubahan ini berlaku. Untuk melakukan ini, masuk tty1 menggunakan Ctrl+ Alt+ F1, login dengan nama pengguna dan kata sandi Anda dan jalankan perintah berikut:
Catatan: gunakan Ctrl+ Alt+ F7untuk beralih ke sesi grafis
Untuk menjalankan skrip saat reboot:
/etc/rc0.d
sudo chmod +x K99_script
K99
dijalankan pada waktu yang tepat.Untuk menjalankan skrip saat shutdown:
/etc/rc6.d
sudo chmod +x K99_script
K99
dijalankan pada waktu yang tepat.Sumber:
sumber
K
untuk 'Bunuh' danS
untuk 'Mulai'.K
untuk runlevels 0, 1 dan 6 danS
untuk runlevels 2, 3, 4 dan 5; ii) Anda tidak perlu memanggil skripK99_foo
, nomor hanya menentukan urutan skrip dijalankan. Anda harus memilih satu yang lebih besar dari yang lain jika Anda ingin dijalankan terakhir; iii) Runlevel 0 bukan untuk reboot! ; Ini untuk mematikan. 6 untuk reboot. iv) skrip tidak memiliki bisnis berada di/etc/rcN.d
direktori. Mereka seharusnya masuk/etc/init.d
dan ditautkan ke/etc/rcN.d
.Bagaimana melakukannya dengan systemd
Jika Anda menemukan utas ini setelah Juni 2016, Ubuntu dan turunannya termasuk Mint akan menggunakan systemd untuk mengontrol inisialisasi dan penutupan sistem. Saya punya masalah dengan pendekatan lama sehingga meneliti cara systemd.
Dengan systemd Anda membuat satu atau dua file untuk memanggil skrip Anda menggunakan templat di bawah ini, dan menjalankan perintah. Sederhana.
Versi GUI
Pertama buat skrip yang ingin Anda jalankan saat startup dan / atau shutdown. Saya membuat .scopening_atstart dan .scfullcopy_atend.
Kemudian pastikan keduanya dapat dieksekusi dengan mengklik kanan file, memilih properti dan memastikan bahwa, di bawah izin, Anda telah mencentang Izinkan mengeksekusi file sebagai program.
Dua file yang saya buat mengisi dan menyimpan konten ramdisk. Mereka juga membuat file di direktori rumah saya untuk membuktikan bahwa layanannya berfungsi. Mereka adalah bentuk:
Kemudian saya membuka file manager saya sebagai root, membuka
/etc/systemd/system
dan membuat file startup.service dan file save-ramdisk.service. Jelas Anda dapat memilih nama Anda sendiri dan nama generik dapat menyertakan file startup yang disebut johns_start.service dan file shutdown yang disebut johns_shutdown.service. Hanya saja, jangan memilih nama layanan yang ada.dan
Anda dapat menggunakan file layanan yang sama, menggantikan jalur lengkap skrip yang dapat dieksekusi untuk saya.
Akhirnya untuk masing-masing jalankan perintah systemctl aktifkan your_files_name (tetapi tanpa layanan akhiran). Jadi yang pertama adalah
systemctl enable startup
Nyalakan kembali komputer satu kali untuk memulai layanan. Layanan mulai akan dijalankan setiap kali systemd memasuki target multi-pengguna dan layanan berhenti ketika keluar dari target multi-pengguna. File layanan alternatif dengan berbagai kondisi aktivasi akan dijelaskan di bawah ini.
Versi CLI (Command Line)
Deskripsi ini mengasumsikan bahwa Anda beroperasi dari direktori home Anda daripada / home / john, gunakan sudo sesuai kebutuhan, dan editor pilihan Anda tempat saya menulis vim atau svim.
Buat skrip startup dan shutdown shell dengan baris pertama
#!/bin/sh
dan buat agar dapat dieksekusi menggunakanchmod +x my_new_filename
.Buat dua file seperti di atas, atau dalam contoh ini, satu file untuk menangani tugas-tugas startup dan shutdown. Saya akan menjalankan skrip di direktori home saya tetapi @don_crissti menunjukkan beberapa alternatif di Stack Exchange.
dan salin dalam konten file:
Kemudian Aktifkan Layanan dengan perintah:
dan reboot sistem Anda setelah itu layanan akan aktif. Perintah
systemctl is-enabled start_and_stop
dansystemctl is-active start_and_stop
dapat digunakan dalam memonitor layanan baru Anda.Mengubah Kondisi Pemicu Shutdown
File-file di atas semua menggunakan buka atau tutup lingkungan multi-pengguna untuk memulai menjalankan skrip. File di bawah ini menggunakan awal dari empat proses mematikan potensial untuk memulai skripnya. Menambahkan atau menghapus target pada baris Sebelum + baris WantedBy akan membuat Anda membuat perbedaan yang lebih baik:
File ini diusulkan dalam jawaban di Unix & Linux oleh @Matthias tapi saya tidak bisa menjalankannya sampai saya menambahkan bagian Instal.
Sekali lagi, edit skrip di
/etc/systemd/service/
dan aktifkan menggunakansystemctl enable your_file_name
. Ketika saya mengubah target saya menggunakansystemclt disable file_name
perintah dan kemudian mengaktifkannya kembali yang menghubungkannya dengan direktori target. Reboot dan layanan akan beroperasi.sumber
man systemd.unit
file yang dibuat pengguna dapat ditempatkan di$XDG_CONFIG_HOME/systemd/user
dan lokasi pengguna lokal lainnya