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)


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)

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

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/tmux@.service

[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 tmux@instanceone.service
# systemctl start tmux@instancetwo.service
# 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)#

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.


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].


0

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

systemd-run --user --scope tmux

juga harus melakukan trik.


Sayangnya, ini tampaknya tidak lagi berfungsi di 18.10 kosmik.
taneli
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.