Unclear as to why "exec" works but "oneshot" does not

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I am running a simple service to tweak SSHD on first boot (the script is at the bottom of this mail). This is on Debian Bookworm incase it makes any difference.

If I configure my service as:

[Unit]
Description=ITS Generate SSH Server Keys
Wants=ssh.service
Before=ssh.service
[Service]
ExecStart=/usr/bin/bash /path/to/script
Type=oneshot
[Install]
WantedBy=multi-user.target

It never completes. Logging into the server console, "dpkg-reconfigure" just seems to sit there in the backround forever and so SSHD never gets restarted/reloaded.

Meanwhile, if I change the [Service] definition to:

[Service]
ExecStart=/usr/bin/bash /path/to/script
RemainAfterExit=true
Type=exec

"dpkg-reconfigure" appears to do its job correctly, and as a result SSHD gets restarted/reloaded, I can login via SSH and everything is great.

I just don't understand why its doing that.

Laura

My script:

#!/usr/bin/env bash
set -uo pipefail
HAS_RUN_FLAG="/path/to/my.flag"
if [[ ! -f "${HAS_RUN_FLAG}" ]];then
    sed -i'' 's/^Subsystem\s*sftp/#&/' /etc/ssh/sshd_config
    dpkg-reconfigure openssh-server
    touch "${HAS_RUN_FLAG}"
fi






[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux