| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- #!/bin/bash
- # info: list system services
- # options: [FORMAT]
- #
- # The function for obtaining the list of configured system services.
- #----------------------------------------------------------#
- # Variable&Function #
- #----------------------------------------------------------#
- # Argument defenition
- format=${1-shell}
- # Includes
- source $VESTA/conf/vesta.conf
- source $VESTA/func/main.sh
- get_srv_state() {
- srv=$1
- proc_name=${2-$1}
- # Check service status
- /etc/init.d/$srv status > /dev/null 2>&1
- if [ $? -eq 0 ]; then
- state='running'
- # Calculate cpu and memory usage
- cpu=0
- mem=0
- for pid in $(/sbin/pidof $proc_name); do
- pid_mem=$(pmap -x $pid | tail -n1 | awk '{print $3}')
- pid_cpu=$(grep "^$pid " $tmp_file | cut -f 2 -d ' ')
- cpu=$((cpu + pid_cpu))
- mem=$((mem + pid_mem))
- done
- mem=$((mem / 1024))
- # Get pid date
- if [ ! -z $pid ] && [ -e "/proc/$pid" ]; then
- mtime=$(stat -c "%Y" /proc/$pid)
- rtime=$((ctime - mtime))
- rtime=$((rtime / 60))
- fi
- else
- # Service is stopped
- state='stopped'
- mem=0
- cpu=0
- rtime="0"
- fi
- }
- #----------------------------------------------------------#
- # Action #
- #----------------------------------------------------------#
- # Save current proccess list
- tmp_file=$(mktemp)
- if [ "$format" = 'json' ]; then
- ps aux | awk '{print $2" "$3}' | tr -d '.' > $tmp_file
- else
- ps aux | awk '{print $2" "$3}' | cut -f 1 -d '.' > $tmp_file
- fi
- # Get current time
- ctime=$(date +%s)
- # Proxy
- service=$PROXY_SYSTEM
- if [ ! -z "$service" ] && [ "$service" != 'no' ]; then
- get_srv_state $service
- str="NAME='$service' SYSTEM='reverse proxy' STATE='$state' CPU='$cpu'"
- str="$str MEM='$mem' RTIME='$rtime'"
- fi
- # Web
- service=$WEB_SYSTEM
- if [ ! -z "$service" ] && [ "$service" != 'no' ]; then
- if [ "$service" == 'apache' ]; then
- service='httpd'
- fi
- get_srv_state $service
- str="$str\nNAME='$service' SYSTEM='web server' STATE='$state' CPU='$cpu'"
- str="$str MEM='$mem' RTIME='$rtime'"
- fi
- # DNS
- service=$DNS_SYSTEM
- if [ ! -z "$service" ] && [ "$service" != 'no' ]; then
- if [ "$service" == 'bind' ]; then
- service='named'
- fi
- get_srv_state $service
- str="$str\nNAME='$service' SYSTEM='dns server' STATE='$state' CPU='$cpu'"
- str="$str MEM='$mem' RTIME='$rtime'"
- fi
- # MAIL
- service=$MAIL_SYSTEM
- if [ ! -z "$service" ] && [ "$service" != 'no' ]; then
- get_srv_state $service
- str="$str\nNAME='$service' SYSTEM='mail server' STATE='$state' CPU='$cpu'"
- str="$str MEM='$mem' RTIME='$rtime'"
- fi
- # IMAP
- service=$IMAP_SYSTEM
- if [ ! -z "$service" ] && [ "$service" != 'no' ]; then
- get_srv_state $service
- str="$str\nNAME='$service' SYSTEM='pop/imap server' STATE='$state'"
- str="$str CPU='$cpu' MEM='$mem' RTIME='$rtime'"
- fi
- # ANTIVIRUS
- service=$ANTIVIRUS_SYSTEM
- if [ ! -z "$service" ] && [ "$service" != 'no' ]; then
- if [ "$ANTIVIRUS_SYSTEM" = 'clamav' ]; then
- service='clamd'
- fi
- get_srv_state $service
- str="$str\nNAME='$service' SYSTEM='email antivirus' STATE='$state'"
- str="$str CPU='$cpu' MEM='$mem' RTIME='$rtime'"
- fi
- # ANTISPAM
- service=$ANTISPAM_SYSTEM
- if [ ! -z "$service" ] && [ "$service" != 'no' ]; then
- get_srv_state $service spamd
- str="$str\nNAME='$service' SYSTEM='email antispam' STATE='$state'"
- str="$str CPU='$cpu' MEM='$mem' RTIME='$rtime'"
- fi
- # DB
- service=$DB_SYSTEM
- if [ ! -z "$service" ] && [ "$service" != 'no' ]; then
- for db in ${DB_SYSTEM//,/ }; do
- service="$db"
- if [ "$service" == 'mysql' ] && [ ! -e "/etc/init.d/$service" ]; then
- service='mysqld'
- fi
- get_srv_state $service
- str="$str\nNAME='$service' SYSTEM='database server' STATE='$state'"
- str="$str CPU='$cpu' MEM='$mem' RTIME='$rtime'"
- done
- fi
- # FTP
- service=$FTP_SYSTEM
- if [ ! -z "$service" ] && [ "$service" != 'no' ]; then
- get_srv_state $service
- str="$str\nNAME='$service' SYSTEM='ftp server' STATE='$state' CPU='$cpu'"
- str="$str MEM='$mem' RTIME='$rtime'"
- fi
- # CRON
- service=$CRON_SYSTEM
- if [ ! -z "$service" ] && [ "$service" != 'no' ]; then
- get_srv_state $service
- str="$str\nNAME='$service' SYSTEM='job scheduler' STATE='$state'"
- str="$str CPU='$cpu' MEM='$mem' RTIME='$rtime'"
- fi
- # Defining config
- echo -e "$str" > $tmp_file
- conf=$tmp_file
- # Defining fileds to select
- fields="\$NAME \$SYSTEM \$STATE \$CPU \$MEM \$RTIME"
- # Listing services
- case $format in
- json) json_list ;;
- plain) nohead=1; shell_list ;;
- shell) fields='$NAME $STATE $CPU $MEM $RTIME'
- shell_list | column -t ;;
- *) check_args '1' '0' 'USER [FORMAT]'
- esac
- rm -f $tmp_file
- #----------------------------------------------------------#
- # Vesta #
- #----------------------------------------------------------#
- exit
|