Files
2025-12-22 15:47:54 +01:00

69 lines
1.7 KiB
Markdown

# Systemd
- List status of services
```bash
# list status of all services
systemctl status
# list status specific service
systemctl status yourservice
```
- List all systemd timers:
```bash
systemctl list-timers
NEXT LEFT LAST PASSED UNIT ACTIVATES
Wed 2018-06-27 16:45:01 CEST 2h 16min left Tue 2018-06-26 16:45:01 CEST 21h ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
Thu 2018-06-28 07:31:00 CEST 17h left Wed 2018-06-27 07:31:25 CEST 6h ago pli-puppet-run.timer pli-puppet-run.service
2 timers listed.
Pass --all to see loaded but inactive timers, too.
```
## Logs
All systemd logs end up in journald. One important exception is __sssd__ which provides authentication against Active Directory. Its logs can be found in
`/var/log/sssd`.
## Debug Service Start Failure
### Wrapper to Catch Output
To catch all the output in a file write a small wrapper:
```
#!/usr/bin/bash
LOGFILE=/tmp/test.log
echo "$(date): " "$@" >> $LOGFILE
exec "$@" &>> $LOGFILE
```
and store it e.g. as `/root/systemd_debug_starter.sh`.
Then inject it into the daemon startup in the unit file with
```
ExecStart=/root/systemd_debug_starter.sh $ORIGINAL_EXECUTABLE
```
then you need to run
```
systemctl daemon-reload
systemctl start $SERVICE
```
and check out the log file.
### Strace
If the error is more subtle, like problems with `SIGPIPE`, `strace` can be useful to unveil the problem.
You may inject strace into the daemon startup in the unit file with
```
ExecStart=strace -D -f -o /tmp/strace.txt $ORIGINAL_EXECUTABLE
```
then you need to run
```
systemctl daemon-reload
systemctl start $SERVICE
```
and check out the log file.