services-up 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #!/bin/sh -e
  2. if profile=`printcontenv S6_RUNTIME_PROFILE` ; then
  3. etc="/etc/cont-profile.d/$profile"
  4. else
  5. etc=/etc
  6. fi
  7. dir=/run/s6/legacy-services
  8. echo "[s6-overlay] legacy-services: copying and starting services in $etc/services.d"
  9. s6-rmrf "$dir"
  10. s6-mkdir -p -m 0755 "$dir"
  11. list=
  12. notifno=
  13. notifyes=
  14. for i in `s6-ls "$etc/services.d" 2>/dev/null | s6-sort` ; do
  15. if test -d "$etc/services.d/$i" ; then
  16. list="$list $i"
  17. if test -r "$dir/$i/notification-fd" ; then
  18. notifyes="$notifyes $dir/$i"
  19. else
  20. notifno="$notifno $dir/$i"
  21. fi
  22. s6-hiercopy "$etc/services.d/$i" "$dir/$i"
  23. fi
  24. done
  25. for file in $list ; do
  26. s6-ln -nsf "$dir/$file" "/run/service/$file"
  27. done
  28. s6-svscanctl -a /run/service
  29. if test 0`printcontenv S6_CMD_WAIT_FOR_SERVICES` -ne 0 ; then
  30. if ! maxtime=`printcontenv S6_CMD_WAIT_FOR_SERVICES_MAXTIME` ; then
  31. maxtime=0
  32. fi
  33. echo "[s6-overlay] legacy-services: waiting for services to get ready..."
  34. # Increase if necessary. Unavoidable race condition, use s6-rc instead!
  35. s6-sleep -m 5
  36. r=0
  37. if test -n "$notifno" && ! s6-svwait -u -t "$maxtime" -- $notifno ; then
  38. r=1
  39. fi
  40. if test -n "$notifyes" && ! s6-svwait -U -t "$maxtime" -- $notifyes ; then
  41. r=1
  42. fi
  43. if test "$r" -ne 0 && b=`printcontenv S6_BEHAVIOUR_IF_STAGE2_FAILS` && test "$b" -eq 2 ; then
  44. echo "[s6-overlay] legacy-services: ... failed"
  45. exit 1
  46. fi
  47. echo "[s6-overlay] legacy-services: ... done"
  48. fi