Description of problem: Even while the user is still on the host with logged-in status, the user@.service can be stopped with systemctl stop user manually. There are some situations that user is not running but the user is still on the host. A customer had a expectation that the systemd-logind should start the user if it's not running, even if the user is available with logged-in status. Currently, it's checked in user_start() as below. int user_start(User *u) { assert(u); if (u->started && !u->stopping) return 0; ... snip ... /* Start user */ user_start_service(u); So, the user is checked, but the status of user is not checked. Version-Release number of selected component (if applicable): Red Hat Enterprise Linux 8.7 How reproducible: Always Steps to Reproduce: 1. login with a test user (UID=1000) 2. confirm if user is running, and stop it. 3. login with the same test user (UID=1000) to make another session. 4. check if user is running or if systemd -user is running for UID=1000 Actual results: The systemd-logind doesn't start user when the user is available. Expected results: The systemd-logind can start user if it's not activated, even when the user is available.
Is there an actual user scenario where this issue surfaces? Because from the description it looks like a self-inflicted problem.
did not see that it was manually stopped in the logs provided by customer in attached case.
Oops hit submit with out asking, if that is what you mean by "self-inflicted"
(In reply to James Hartsock from comment #2) > did not see that it was manually stopped in the logs provided by customer in > attached case. Well, the first sentence of the bug description says it. That kinda gives one an idea that's what the customer is doing... If that's not the case, it would be interesting to see how it was stopped. Could you attach the log here?
Can we see the output of # systemctl cat user@.service ?