Saya memiliki mesin yang menjalankan beberapa VM gelandangan. Masalah yang saya miliki adalah bahwa kadang-kadang saya lupa mematikan VM sebelum mematikan atau mem-boot ulang komputer saya. Karena itu mesin saya macet dengan pesan ini:waiting for vboxnet0 to become free
Saya mencari solusi dan saya menemukan halaman ini:
http://en.kioskea.net/faq/3348-ubuntu-executing-a-script-at-startup-and-shutdown
Saya mencoba apa yang mereka untuk shutdown, tetapi tidak berhasil.
Saya menulis file sh untuk perintah itu:
#!/bin/bash
cd ~/workspace/git/mediaservice
vagrant halt
ada saran?
shutdown
reboot
execute-command
SERPRO
sumber
sumber
Jawaban:
Jika VM gelandangan Anda menggunakan VirtualBox, Anda dapat memodifikasi / etc / default / virtualbox dan mengubah baris yang berbunyi:
SHUTDOWN_USERS=""
untuk
SHUTDOWN_USERS="all"
Itu diperbaiki untuk saya di Ubuntu 14.04
sumber
SHUTDOWN_USERS=`cut -d: -f1 /etc/passwd`
bukanSHUTDOWN_USERS="all"
/etc/default/virtualbox
file ...Untuk menjalankan skrip saat shutdown atau reboot:
sudo chmod +x K99_script
Catatan:
sumber
sumber
Bagaimana Melakukannya dengan Systemd (lebih mudah)
Sekarang varian Ubuntu dan Mint telah pindah ke systemd saya menemukan solusi lama saya berdasarkan di atas menjadi kurang memuaskan. Saya mencari di seluruh web untuk mengetahui bagaimana melakukannya dengan systemd dan akhirnya menggabungkan kebijaksanaan orang lain dan mendokumentasikannya sebagai posting blog di blogspot.com.au yang berisi tutorial berikut.
Dengan systemd Anda membuat satu atau dua file untuk memanggil skrip Anda menggunakan templat di bawah ini, dan menjalankan beberapa perintah. Sederhana.
Versi GUI
Pertama buat skrip yang ingin Anda jalankan saat startup dan / atau shutdown. Lakukan saja jika Anda tidak membutuhkan keduanya. 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.
Perintah tambahan yang berguna termasuk:
systemctl adalah startup yang diaktifkan
systemctl adalah startup yang aktif
systemctl restart startup
Lebih banyak dapat ditemukan di referensi di atas.
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 pada jawaban kedua posting ini tetapi saya tidak dapat 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
Buat file executable shell dengan skrip Anda di direktori /etc/init.d/.
Karena ini harus dijalankan selama shutdown atau reboot perlu membuat softlink di /etc/rc0.d/ dan /etc/rc6.d
Contoh:
sumber
chmod
mengubah tanda izin target tautan, yang sama untuk kedua argumen. Menentukan keduanya sama-sama mubazir.Anda dapat menemukan solusinya di sini: Tangguhkan / lanjutkan semua kotak Vagrant pada saat sistem mati / mulai .
Ada skrip init sederhana yang menunda semua kotak yang berjalan sebelum dimatikan.
Instalasi
Edit
/etc/init.d/vagrant-boxes
dan rekatkan skrip dari artikel di atas dan simpan. Atau unduh dari sini dan simpan di/etc/init.d/vagrant-boxes
. Pada debian / ubuntu dll, jalankansumber
Untuk Ubuntu 14.10 Anda suka
RC04
tidakRC99
Apa yang harus dilakukan dari awal
/etc/init.d/scriptName
ln -s /etc/rc6.d/K04scriptName /etc/init.d/scriptName
Langkah-langkah yang saya lalui
sumber