Aktivasi soket di systemd dapat bekerja dalam dua mode:
Accept=true
:systemd menyimpan soket pendengar, menerima setiap koneksi masuk, memunculkan proses baru untuk setiap koneksi dan meneruskan soket yang sudah ada ke sana. Kasus ini sepele (setiap proses keluar setelah selesai).Accept=false
:systemd membuat soket pendengar dan mengawasinya untuk koneksi masuk. Segera setelah seseorang masuk, systemd memunculkan layanan dan meneruskan soket pendengar ke sana. Layanan kemudian menerima koneksi masuk dan yang berikutnya. Systemd tidak lagi melacak apa yang terjadi pada soket, sehingga tidak dapat mendeteksi ketidakaktifan.
Dalam kasus terakhir, menurut saya satu-satunya solusi yang benar-benar bersih adalah memodifikasi aplikasi agar keluar saat tidak digunakan selama beberapa waktu. Jika Anda tidak dapat melakukan itu, solusi kasarnya adalah menyiapkan cron atau pengatur waktu sistem untuk mematikan layanan satu jam sekali. Ini bisa menjadi perkiraan yang masuk akal jika layanan hanya sangat jarang muncul.
Perhatikan bahwa kasus penggunaan mungkin sangat jarang. Proses duduk di poll()/select() menunggu koneksi tidak menghabiskan waktu CPU, jadi satu-satunya sumber daya yang digunakan dalam situasi itu adalah memori. Mungkin lebih mudah dan lebih efisien untuk hanya mengatur beberapa pertukaran dan membiarkan kernel memutuskan apakah perlu mempertahankan proses dalam RAM sepanjang waktu atau tidak.