Bagaimana menjalankan tmux / layar dengan systemd> 230?

19

Saya menjalankan 16,04 dan systemdsekarang membunuh tmuxketika pengguna memutus ( ringkasan perubahan ).

Apakah ada cara untuk menjalankan tmuxatau screen(dengan program serupa) dengan systemd230? Saya membaca semua diskusi panas tentang pro dan kontra dari yang behavious tetapi tidak ada solusi yang disarankan.

(Saya melihat perilaku di 229 juga)

WoJ
sumber
1
Itu aneh - saya punya systemd-229-4ubuntu7(dari pembaruan xenial) dan saya tidak melihat perilaku ini. Bagaimanapun, perilaku ini telah dikembalikan ke Debiansystemd-230-2 , jadi mungkin akan segera dikembalikan di Ubuntu juga.
MvanGeest
mirbsd.org/~tg/Debs/dists/jessie/wtf/Pkgs/mirabilos-support memiliki paket prevent-systemd- * yang memungkinkan Anda untuk menginstal dan menggunakan sysvinit seperti sebelumnya
mirabilos

Jawaban:

1

Menggunakan Ubuntu 18.04 dengan systemd versi 237 , tidak ada solusi yang disarankan bekerja untuk saya.

Solusi yang berhasil bagi saya adalah

  • edit /etc/systemd/logind.conf
  • tanda komentar KillExlcudeUsers
  • tambahkan daftar pengguna yang dipisahkan ruang (mis., KillExlcudeUsers=root user1 user2)
takut
sumber
19

Solusi yang tepat adalah untuk menonaktifkan perilaku menyinggung systemd seluruh sistem.

Edit /etc/systemd/logind.conf( Anda harus sudo , tentu saja) dan atur

KillUserProcesses=no

Anda juga dapat meletakkan pengaturan ini dalam file terpisah, mis /etc/systemd/logind.conf.d/99-dont-kill-user-processes.conf.

Kemudian restart systemd-logind.service.

sudo systemctl restart systemd-logind
Michael Hampton
sumber
4
Bagaimana solusi yang tepat untuk masalah khusus untuk satu unit untuk mengatur beberapa pengaturan sistem yang luas?
jpath
Karena, seperti yang dapat Anda lihat dari bahkan hanya membaca pertanyaan, apalagi semua diskusi lain di tempat lain tentang hal ini yang dirujuk secara tidak langsung, ini tidak spesifik untuk satu aplikasi. Ini adalah poin yang bahkan dicetak tebal dalam pertanyaan.
JdeBP
Anda hanya perlu mengaktifkan berlama-lama untuk pengguna melalui loginctl enable-linger <user>. Dari man loginctl: "Jika diaktifkan untuk pengguna tertentu, manajer pengguna akan muncul untuk pengguna saat boot dan disimpan setelah logout. Ini memungkinkan pengguna yang tidak masuk untuk menjalankan layanan jangka panjang."
Adrian Günter
Ubuntu 18.04 di sini. Ini tidak berfungsi, bahkan setelah reboot. Mengaktifkan berlama-lama juga tidak.
Pa_
11

Berdasarkan jawaban @ Rinzwind dan terinspirasi oleh deskripsi unit , yang terbaik yang bisa saya temukan adalah menggunakan TaaS (Tmux sebagai Layanan) - contoh umum terpisah dari tmuxsatu reattaches.

# cat /etc/systemd/system/[email protected]

[Unit]
Description=tmux default session (detached)
Documentation=man:tmux(1)

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/tmux new-session -d -s %I
ExecStop=/usr/bin/tmux kill-server
KillMode=none

[Install]
WantedBy=multiplexer.target

# systemctl start [email protected]
# systemctl start [email protected]
# tmux list-sessions

instanceone: 1 windows (created Sun Jul 24 00:52:15 2016) [193x49]
instancetwo: 1 windows (created Sun Jul 24 00:52:19 2016) [193x49]

# tmux attach-session -t instanceone

(instanceone)#
WoJ
sumber
Ini rapi tetapi saya tidak bisa seumur hidup mencari tahu mengapa Anda menggunakannya! :)
sarnold
5
@sarnold: untuk dapat mengontrol aplikasi yang dimulai dengan konsol, tetapi yang seharusnya berjalan saat boot. Minecraft adalah salah satu contohnya.
WoJ
5

RemainAfterExit =

Mengambil nilai boolean yang menentukan apakah layanan akan dianggap aktif bahkan ketika semua prosesnya keluar. Default ke no.

Rinzwind
sumber
Terima kasih. Saya menerima dan memberi +1 jawaban Anda karena memberikan inti dari solusi. Apakah Anda tahu jika itu dapat digunakan dalam mode interaktif (dengan meluncurkan secara tmuxinteraktif, yang bertentangan dengan jawaban saya)?
WoJ
meragukannya. systemd mungkin tidak akan peduli tentang tmux Anda kecuali Anda memberi tahu systemd bahwa itu seharusnya: -P (pendekatan mereka terhadap ini agak single-minded .... sepertinya itu adalah cara mereka atau tidak.) Anda memerlukan deskripsi unit seperti Anda diposting. Merasa bebas untuk menerima milik Anda dan / atau memperluas milik Anda ;-) Saya tidak perlu perwakilan>: - D
Rinzwind
3
Jawaban ini perlu lebih detail seperti di mana menggunakan pengaturan itu.
kasperd
1
Tentu tetapi jawabannya adalah salinan / tempel dari halaman buku panduan ;-)
Rinzwind
1
@ WoJ Anda dapat membuat alias untuk tmuxmemulai sebagai systemd-run --remain-after-exit tmux(atau mungkin bahkan dengan --scope --userflag).
Debilski
2

Anda perlu mengatur Typelayanan ke forking, seperti yang dijelaskan di sini .

Mari kita asumsikan layanan yang ingin Anda jalankan screendipanggil minecraft. Kemudian Anda akan membuka minecraft.serviceeditor teks dan menambah atau mengedit entri di Type=forkingbawah bagian [Service].

Robin Hartmann
sumber
0

Menurut /unix//a/287282/117599 meminta tmuxmenggunakan

systemd-run --user --scope tmux

juga harus melakukan trik.

phk
sumber
Sayangnya, ini tampaknya tidak lagi berfungsi di 18.10 kosmik.
taneli