servis 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. #!/bin/bash
  2. # Aylinux 2021 kolay servis yönetimi betiği (Milis Linuxtan alınmıştır.)
  3. # todo!!! localization
  4. usage=" Aylinux 2021 kolay servis yönetimi betiği
  5. servis baslat|durdur|ybaslat|durum|kur|sil|aktif|pasif <servis_adı>
  6. servis yap <service_daemon_path> - Hizmeti manuel olarak yükle
  7. servis liste - Mevcut hizmetleri listele
  8. servis onar - Servis sistemini onar
  9. servis ayar - Hizmet başlatmayı yapılandır
  10. "
  11. _err(){
  12. echo "$1"
  13. exit 1
  14. }
  15. _service_create(){
  16. echo '
  17. #!/bin/sh
  18. . /etc/rc.d/functions
  19. DAEMON=@@daemon@@
  20. NAME=`basename ${DAEMON}`
  21. OPT=""
  22. case "${1}" in
  23. baslat)
  24. log_info_msg "${NAME^} daemon başlatılıyor..."
  25. pidlist=`pidofproc ${DAEMON}`
  26. if [ "${?}" = "0" ]; then
  27. log_info_msg2 " Zaten çalışıyor"
  28. log_success_msg2
  29. exit 0;
  30. fi
  31. # Start as background process and assume OK
  32. ${DAEMON} $OPT &
  33. log_success_msg2
  34. ;;
  35. durdur)
  36. log_info_msg "${NAME^} hizmeti durduruluyor..."
  37. killproc ${DAEMON}
  38. evaluate_retval
  39. ;;
  40. ybaslat)
  41. ${0} durdur
  42. sleep 1
  43. ${0} baslat
  44. ;;
  45. durum)
  46. statusproc ${DAEMON}
  47. ;;
  48. *)
  49. echo "Kullanımı: ${0} {baslat|durdur|ybaslat|durum}"
  50. exit 1
  51. ;;
  52. esac
  53. exit 0
  54. # Servis
  55. '
  56. }
  57. service_dir="/usr/aylinux/ayarlar/servisler"
  58. old_services="checkfs cleanfs console localnet modules mountvirtfs mountfs sysctl udev udev_retry"
  59. [ ! -d $service_dir ] && _err "$service_dir bulunamadı!"
  60. [ -z "$1" ] && _err "$usage"
  61. job=$1
  62. if [ $job == "onar" ] ; then
  63. # update new service up-functions
  64. sed -i "s/lib\/lsb\/init-functions/etc\/rc.d\/functions/g" /etc/rc.d/init.d/*
  65. # remove deprecated services
  66. for osrv in ${old_services}; do rm -fv /etc/rc.d/init.d/${osrv}; done
  67. # remove broken service sysmlinks
  68. find /etc/rc.d -xtype l
  69. find /etc/rc.d -xtype l -delete
  70. # fix sendsignals wrong symlink
  71. [ -L /etc/rc.d/rc0.d/S60sendsignals ] && mv /etc/rc.d/rc0.d/S60sendsignals /etc/rc.d/rc0.d/K60sendsignals
  72. [ -L /etc/rc.d/rc6.d/S60sendsignals ] && mv /etc/rc.d/rc6.d/S60sendsignals /etc/rc.d/rc6.d/K60sendsignals
  73. exit 0
  74. fi
  75. if [ $job == "liste" ] ; then
  76. # list available services
  77. for srv in `ls "$service_dir/init.d/"`;do
  78. #_status="-"
  79. if [ -f /etc/rc.d/init.d/${srv} ] ;then
  80. printf '\e[1;32m%-6s\e[m\n' "$srv" | column -t
  81. else
  82. printf '\e[1;31m%-6s\e[m\n' "$srv" | column -t
  83. fi
  84. done
  85. exit 0
  86. fi
  87. if [ $job == "ayar" ] ; then
  88. pushd $(pwd)
  89. cd ${service_dir}
  90. make install
  91. popd
  92. exit 0
  93. fi
  94. [ -z "$2" ] && _err "service_name bulunamadı"
  95. service=$2
  96. # service install
  97. if [ $job == "kur" ]; then
  98. [ ! -f ${service_dir}/init.d/$service ] && _err "servisi $service_dir dizininde bulunamadı"
  99. cd $service_dir
  100. make kur-$service
  101. # service remove
  102. # handle this in two case, first it is already registred service latter is manual service.
  103. elif [ $job == "sil" ]; then
  104. [ ! -f /etc/init.d/${service} ] && _err "servisi /etc/init.d dizininde bulunamadı"
  105. if [ -f ${service_dir}/init.d/${service} ];then
  106. cd $service_dir
  107. make sil-$service
  108. else
  109. for link in $(ls -d /etc/rc.d/rc[0-6].d/*);do
  110. [ "`readlink -f $link`" = "/etc/rc.d/init.d/${service}" ] && rm -vf $link
  111. done
  112. rm -fv /etc/rc.d/init.d/${service}
  113. fi
  114. elif [ $job == "links" ]; then
  115. for link in $(ls -d /etc/rc.d/rc[0-6].d/*);do
  116. [ "`readlink -f $link`" = "/etc/rc.d/init.d/${service}" ] && echo $link
  117. done
  118. elif [ $job == "yap" ]; then
  119. [ -z ${service} ] && service="/usr/bin/test"
  120. _service_create > /tmp/`basename ${service}`
  121. sed -i "s~@@daemon@@~${service}~g" /tmp/`basename ${service}`
  122. echo "`basename ${service}` prepared under /tmp - execute command below for service setup"
  123. echo "cp /tmp/`basename ${service}` /etc/rc.d/init.d/`basename ${service}`"
  124. # service disable / if we don't want to auto-starting of a service
  125. # after this we can start it manually
  126. # handle this in two case, first it is already registred service latter is manual service.
  127. elif [ $job == "disable" ]; then
  128. [ ! -f /etc/init.d/${service} ] && _err "service not found in /etc/init.d"
  129. if [ -f ${service_dir}/init.d/${service} ];then
  130. cd $service_dir
  131. make sil-$service
  132. cp -vf ${service_dir}/init.d/${service} /etc/init.d/
  133. # manual service comes with package standalone or put by the user
  134. else
  135. _disabled="n"
  136. for link in $(ls -d /etc/rc.d/rc[0-6].d/*);do
  137. if [ "`readlink -f $link`" = "/etc/rc.d/init.d/${service}" ];then
  138. rm -vf $link
  139. _disabled="y"
  140. fi
  141. done
  142. [ "${_disabled}" == "n" ] && echo "servisi saten çalışmıyor"
  143. fi
  144. # if service already under /etc/init.d but has not auto-init/close status
  145. # bunu iki durumda halledin, birincisi zaten kayıtlı servis, ikincisi manuel servis.
  146. elif [ $job == "enable" ]; then
  147. [ ! -f /etc/init.d/${service} ] && _err "servisi /etc/init.d dizininde bulunamadı"
  148. if [ -f ${service_dir}/init.d/${service} ];then
  149. cd $service_dir
  150. make kur-$service
  151. # manuel servis, paket bağımsız olarak gelir veya kullanıcı tarafından koyulur
  152. else
  153. ln -svf /etc/init.d/${service} "/etc/rc.d/rc0.d/K11${service}"
  154. ln -svf /etc/init.d/${service} "/etc/rc.d/rc1.d/K11${service}"
  155. ln -svf /etc/init.d/${service} "/etc/rc.d/rc2.d/K11${service}"
  156. ln -svf /etc/init.d/${service} "/etc/rc.d/rc6.d/K11${service}"
  157. ln -svf /etc/init.d/${service} "/etc/rc.d/rc3.d/S91${service}"
  158. ln -svf /etc/init.d/${service} "/etc/rc.d/rc4.d/S91${service}"
  159. ln -svf /etc/init.d/${service} "/etc/rc.d/rc5.d/S91${service}"
  160. fi
  161. # service start/stop/status
  162. elif [ $job == "baslat" ] || [ $job == "prestart" ] || [ $job == "ybaslat" ] || [ $job == "yyukle" ] || [ $job == "durdur" ] || [ $job == "durum" ]; then
  163. [ ! -f /etc/init.d/${service} ] && _err "servis /etc/init.d klasöründe bulunamadı."
  164. /etc/init.d/${service} $job
  165. else
  166. echo "non-valid $job"
  167. _err "$usage"
  168. fi