Русский словарь Linux Bash Проверьте, если пусто

Наконец-то я нашел ответ, как обычно это было что-то очень простое и логичное.

Сценарий INIT, который входит в/etc/init.d/для инициализации запуска и завершения работы. Не все сценарии init одинаковы!

Поэтому я собираюсь поделиться тем, как я получил RED5 службу, чтобы работать в целом.

Это для CentOS 6.4 32bit на Linux VPS, и на самом деле я переустановил свою систему, пытаясь понять мою ошибку, но в моём наборе системы не было ничего плохого.

Поэтому сначала java rpm, чтобы вам не нужно apache. Благодаря @ slm

$ wget --no-check-certificate\

--no-cookies                                           \

--header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com" \
"http://download.oracle.com/otn-pub/java/jdk/7/jdk-7-linux-i586.rpm"

Затем rpm -ivh jdk-7u51-linux-i586.rpm

Установите последнюю RED5 версию, которая в настоящее время RC2 (выпуск 2 выше RC1)

 cd /usr/local/

 wget http://red5.org/downloads/red5/1_0/red5-1.0.0-RC2.tar.gz

 tar -xzvf red5-1.0.0.tar.gz

 rm red5-1.0.0.tar.gz

 mv red5-1.0.0 red5

Теперь все важные

vi/etc/init.d/red5

 # !/bin/sh
# Для RedHat и кузенов:
# chkconfig: 2345 85 85
# описание: Red5 сервер потоковой передачи флэш-памяти
# имя процесса: red5
  PROG=red5
  RED5_HOME=/usr/local/red5
  DAEMON=$RED5_HOME/$PROG.sh
  PIDFILE=/var/run/$PROG.pid

  # Source function library
  . /etc/rc.d/init.d/functions

  [ -r /etc/sysconfig/red5 ] && . /etc/sysconfig/red5

  RETVAL=0

  case "$1" in
  start)
  echo -n $"Starting $PROG: "
  cd $RED5_HOME
  $DAEMON >/dev/null 2>/dev/null &
  RETVAL=$?
  if [ $RETVAL -eq 0 ]; then
  echo $! > $PIDFILE
  touch /var/lock/subsys/$PROG

  fi
  [ $RETVAL -eq 0 ] && success $"$PROG startup" || failure $"$PROG startup"
  echo
  ;;
  stop)
  echo -n $"Shutting down $PROG: "
  killproc -p $PIDFILE
  RETVAL=$?
  echo
  [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$PROG
  ;;
  restart)
  $0 stop
  $0 start
  ;;
  status)
  status $PROG -p $PIDFILE
  RETVAL=$?
  ;;
  *)
  echo $"Usage: $0 {start|stop|restart|status}"
  RETVAL=1
  esac

  exit $RETVAL

Активировать скрипт init:

 chmod 755/etc/init.d/red5
chkconfig red5 --add
chkconfig red5 on

Обновите настройки, расположенные по адресу:

/usr/local/red5/conf/* (фактически не уверены в этой части!)

Запустите его:

/etc/init.d/red5 start

Я уверен, что любое количество скриптов init работает, но иногда вам нужно поместить каталог ваших файлов JDK в скрипт, и я просто нахожу вышеприведенный сценарий более простым. Но если вы хотите знать, они расположены в /usr/lib/jvm

-121--290645-

Вы можете использовать вверху и нажать u , чтобы получить отчет пользователя. Или просто запустите:

atop -u

-121--290625-

Ваши веб-серверы уже должны записываться в локальный файл, а syslog-ng считывает этот файл и отправляет его на ваш целевой Logserver. В Ubuntu журналы Apache сохраняются по умолчанию в/var/log/apache2. Файл syslog-ng.conf или файл в каталоге/etc/syslog-ng/conf.d должен содержать следующие строки, указывающие место отправки журналов Apache.

source s_apache {
 file("/var/log/apache2/access.log");
 file("/var/log/apache2/error.log");
 };

log { source(s_apache);
 destination(d_tls);
 };

Перечитав вопрос, я заметил, что вы еще не сделали этого. На самом деле я написал запись в блоге о пошаговом способе выполнения этой операции , которая включает в себя приведенную выше конфигурацию, и оставляет ваши данные в локальных журналах в качестве отработки отказа.

0
07.12.2018, 12:14
2 ответа

Длина (или количество элементов в )ассоциативного массива доступна как ${#array[@]}, как и для обычного массива. Если это число равно нулю, то массив пуст.

if [ "${#array[@]}" -ne 0 ]; then
    echo 'array is not empty'
fi

Для обычной переменной оболочки можно использовать тест -v, чтобы проверить, существует ли она или нет:

if [ -v variable ]; then
    echo 'variable exists'
fi

... но это интуитивно не работает с массивами. Поэтому вы не можете надежно использовать это, чтобы определить, существует ли массив, но он пуст, или он еще не объявлен.

Проверка будет верна для массивов, если их ключ 0существует.

7
28.01.2020, 02:23
[ -z ${!dict[*]} ] && echo "yes" || echo "no" yes 

это должно быть нормально, чтобы проверить, что он пуст.

-1
28.01.2020, 02:23

Теги

Похожие вопросы