s6-rc-restart 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #!/bin/sh --
  2. set -ue
  3. usage() {
  4. printf '%s\n' \
  5. "Usage: ${0##*/} [options] services..." \
  6. ' -u use user database' \
  7. ' -x use user X11 database' \
  8. ' -h show this help message'
  9. exit "${1:-0}"
  10. }
  11. USERDB=0
  12. X=0
  13. while getopts uxh arg; do
  14. case "${arg}" in
  15. u) USERDB=1 ;;
  16. x)
  17. USERDB=1
  18. X=1
  19. ;;
  20. h) usage 0 ;;
  21. ?) usage 1 ;;
  22. esac
  23. done
  24. shift $(( OPTIND - 1 ))
  25. if [ "${USERDB}" -eq 0 ]; then
  26. [ "$(id -u)" -eq 0 ] || {
  27. if command -v doas >/dev/null; then
  28. exec doas -- "${0}" "${@}"
  29. elif comman -v sudo >/dev/null; then
  30. exec sudo -- "${0}" "${@}"
  31. else
  32. echo "please run as root" 1>&2
  33. exit 1
  34. fi
  35. }
  36. LIVE='/run/s6-rc'
  37. else
  38. RUNPATH="${XDG_RUNTIME_DIR:-${TMPDIR:-/tmp}/runtime-${USER:-$(id -un)}}/s6"
  39. if [ "${X}" -eq 1 ]; then
  40. LIVE="${RUNPATH}/x11/s6-rc"
  41. else
  42. LIVE="${RUNPATH}/user/s6-rc"
  43. fi
  44. fi
  45. if [ "${#}" -lt 1 ]; then
  46. echo "provede service names to restart" 1>&2
  47. exit 1
  48. fi
  49. set -x
  50. for sv; do
  51. s6-rc -l "${LIVE}" stop "${sv}"
  52. s6-rc -l "${LIVE}" start "${sv}"
  53. done