Saya mencoba mencari cara untuk menulis skrip yang akan memulai program di sesi GNU Screen pada 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 segera melepaskan sesi ini.
Terima kasih atas jawabannya, tapi sekarang saya menghadapi masalah lain. Script berhenti bekerja setelah saya menaruh beberapa variabel untuk "program dan program2". 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.
Apakah Anda benar-benar bermaksud meletakkan \
di akhir baris? Jika tidak, maka cobalah untuk menghapusnya - karakter tersebut akan keluar dari karakter berikut.
juga, menghilangkan -X
membantu pengaturan bekerja untuk saya, misalnya:
screen -S test -d -m -X touch /tmp/test
gagal dengan Tidak ada sesi layar yang ditemukan
, namun:
screen -S test -d -m touch /tmp/test
berfungsi dengan baik. Dengan demikian saya menduga yang berikut ini akan bekerja untuk Anda:
#!/bin/bash
screen -S test -d -m $HOME/folder/folder/.program
screen -S test2 -d -m $HOME/folder/folder/.program2
Ingat, bahwa jika anda menjalankan ini pada saat boot, $HOME tidak sama dengan setelah anda log masuk sebagai user tertentu. Jika Anda perlu menjalankannya sebagai pengguna tertentu, Anda harus menggunakan su
untuk menjalankannya sebagai pengguna tersebut, dan menentukan jalur lengkap akan menghilangkan ambiguitas:
#!/bin/bash
screen -S test -d -m su - username /home/username/folder/folder/.program
screen -S test2 -d -m su - username /home/username/folder/folder/.program2
Atau, Anda akan memanggil seluruh skrip di atas sebagai su - username /path/to/your/script
.
Seperti yang disebutkan Cry Havok, Anda dapat menempatkan program tepat pada baris perintah.
Jika anda benar-benar harus menggunakan opsi -X, maka a) anda perlu menentukan perintah 'screen' dan b) sesi harus ada sebelumnya.
screen -dmS test
screen -S test -X screen $HOME/folder/folder/.program
screen -dmS test2
screen -S test2 -X screen $HOME/folder/folder/.program2