Saya mencoba mencari cara untuk menulis skrip yang akan memulai program dalam sesi Layar GNU saat boot sistem. Saya mencoba ini:
#!/bin/bash
screen -S test -d -m -X $HOME/folder/folder/.program \
screen -S test2 -d -m -X $HOME/folder/folder/.program2 \
tetapi perintah tidak dapat dieksekusi karena sesi sudah terlepas? Satu-satunya hal yang saya butuhkan adalah menjalankan perintah di sesi layar dan lepaskan sesi ini segera.
Terima kasih atas jawabannya, tetapi sekarang saya menghadapi masalah lain. Script berhenti berfungsi setelah saya menaruh beberapa variabel untuk "program dan program2" saya. Sesuatu seperti ini:
#!/bin/bash
screen -S test -d -m $HOME/folder/folder/.program -f config.cfg
untuk beberapa alasan "-f config.cfg" diabaikan. Saya juga mencoba mengutip perintah dan tidak membantu juga.
scripts
gnu-screen
TbMa
sumber
sumber
-X
pilihan?Jawaban:
Apakah Anda benar-benar bermaksud meletakkannya
\
di akhir baris? Jika tidak maka coba hapus itu - mereka lolos dari karakter berikut.juga, menjatuhkan bantuan
-X
membantu pengaturan, misalnya:gagal dengan
No screen session found
, namun:bekerja dengan baik. Karena itu saya curiga hal berikut akan bekerja untuk Anda:
Ingat, bahwa jika Anda menjalankan ini saat boot, $ HOME tidak sama dengan setelah Anda masuk sebagai pengguna tertentu. Jika Anda perlu menjalankannya sebagai pengguna tertentu, Anda harus menggunakan suka
su
untuk menjalankannya sebagai pengguna itu, dan menentukan path lengkap akan menghapus ambiguitas:Atau, Anda dapat memanggil seluruh skrip di atas sebagai
su - username /path/to/your/script
.sumber
screen -S test -d -m $HOME/folder/folder/.program
hampir melakukan persis apa yang saya cari kecuali jika folder / .program selesai, sesi layar ditutup secara otomatis. Apakah ada cara untuk menjaga sesi layar (shell) tetap berjalan bahkan setelah program selesai? Mungkin alih-alih menjalankan program secara eksklusif, mulai sebuah shell yang memulai program dan kemudian kembali ke prompt shell, atau sesuatu?Seperti yang disebutkan Cry Havok, Anda dapat menempatkan program tepat di baris perintah.
Jika Anda benar-benar harus menggunakan opsi -X, maka a) Anda perlu menentukan perintah 'layar' dan b) sesi harus ada sebelumnya.
sumber
sleep
perintah eksplisit untuk memberi waktu pada layar untuk memulai sesi sebelum mengirim perintah.