Skip to content

Commit b08881d

Browse files
committed
fix: don't wait on systemctl if we don't need to
1 parent c80f428 commit b08881d

2 files changed

Lines changed: 13 additions & 9 deletions

File tree

src/main.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ fn main() -> anyhow::Result<()> {
127127
service.add_profile_fragment(&mode)?;
128128
if !no_restart {
129129
service.reload_unit_config()?;
130-
service.action("restart")?;
130+
service.action("restart", false)?;
131131
} else {
132132
log::warn!("Profiling config will only be applied when systemd config is reloaded, and service restarted");
133133
}
@@ -138,7 +138,7 @@ fn main() -> anyhow::Result<()> {
138138
no_restart,
139139
}) => {
140140
let service = systemd::Service::new(&service);
141-
service.action("stop")?;
141+
service.action("stop", true)?;
142142
service.remove_profile_fragment()?;
143143
let resolved_opts = service.profiling_result()?;
144144
log::info!(
@@ -154,15 +154,15 @@ fn main() -> anyhow::Result<()> {
154154
}
155155
service.reload_unit_config()?;
156156
if !no_restart {
157-
service.action("start")?;
157+
service.action("start", false)?;
158158
}
159159
}
160160
cl::Action::Service(cl::ServiceAction::Reset { service }) => {
161161
let service = systemd::Service::new(&service);
162162
let _ = service.remove_profile_fragment();
163163
let _ = service.remove_hardening_fragment();
164164
service.reload_unit_config()?;
165-
service.action("try-restart")?;
165+
service.action("try-restart", false)?;
166166
}
167167
}
168168

src/systemd/service.rs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -197,11 +197,15 @@ impl Service {
197197
Ok(())
198198
}
199199

200-
pub fn action(&self, verb: &str) -> anyhow::Result<()> {
201-
log::info!("{} {}", verb, &self.unit_name());
202-
let status = Command::new("systemctl")
203-
.args([verb, &self.unit_name()])
204-
.status()?;
200+
pub fn action(&self, verb: &str, block: bool) -> anyhow::Result<()> {
201+
let unit_name = self.unit_name();
202+
log::info!("{} {}", verb, unit_name);
203+
let mut cmd = vec![verb];
204+
if !block {
205+
cmd.push("--no-block");
206+
}
207+
cmd.push(&unit_name);
208+
let status = Command::new("systemctl").args(cmd).status()?;
205209
if !status.success() {
206210
anyhow::bail!("systemctl failed: {status}");
207211
}

0 commit comments

Comments
 (0)