CentOS 6.7 x86_64
부팅 때 아래와 같이 init 스크립트가 구동이 되면서 일부 데몬 시작 시 아래와 같이 메시지(unary operator expected)가 발생을 하는 사례가 있었다.
/etc/rc3.d/S24avahi-daemon: line 50: [: =: unary operator expected Starting Avahi daemon... [ OK ] Mounting filesystems: [ OK ] Retrigger failed udev events [ OK ] Starting sshd: [ OK ] /etc/rc3.d/S80postfix: line 73: [: =: unary operator expected Starting postfix: [ OK ] Starting crond: [ OK ] /etc/rc3.d/S91netatalk: line 23: [: =: unary operator expected Starting netatalk: [ OK ] /etc/rc3.d/S91nmb: line 31: [: =: unary operator expected Starting NMB services: [ OK ] /etc/rc3.d/S91smb: line 31: [: =: unary operator expected Starting SMB services: [ OK ]
문제의 스크립트 라인들을 확인해 보니 모두
[ ${NETWORKING} = "no" ] && exit 1 구문의 라인에서 발생을 한 것이다.
그래서 NETWORKING이 포함된 init 스크립트를 확인해 보자 해당 시스템은 아래와 같은 데몬들이 확인이 되었다.
[root@indigonas ~]# cd /etc/rc3.d [root@indigonas rc3.d]# grep NETWORKING ../init.d/* ../init.d/avahi-daemon: [ ${NETWORKING} = "no" ] && exit 1 ../init.d/netatalk: if [ ${NETWORKING} = "no" ]; then ../init.d/network:[ "${NETWORKING}" = "no" ] && exit 6 ../init.d/nfs: [ "${NETWORKING}" != "yes" ] && exit 6 ../init.d/nfslock: [ "${NETWORKING}" = "no" ] && exit 6 ../init.d/nmb:[ ${NETWORKING} = "no" ] && exit 1 ../init.d/postfix: [ ${NETWORKING} = "no" ] && exit 1 ../init.d/rdisc: [ ${NETWORKING} = "no" ] && exit 1 ../init.d/rpcbind: [ "$NETWORKING" = "yes" ] || exit 6 ../init.d/rpcgssd: [ "${NETWORKING}" != "yes" ] && exit 6 ../init.d/rpcidmapd: [ "${NETWORKING}" != "yes" ] && exit 6 ../init.d/rpcsvcgssd: [ "${NETWORKING}" != "yes" ] && exit 6
그래서 해당 스크립트들의 NETWORKING 변수를 " "로 묶어 줬더니 메시지는 발생하지 않는다.
[ ${NETWORKING} = "no" ] && exit 1 아래 처럼 수정 [ "${NETWORKING}" = "no" ] && exit 1
그런데 메시지가 발생하지 않던 시스템이 왜 갑자기 발생을 했는지는 모르겠지만 환경 변수 등을 수정하면서 발생했을 수 도 있을거라는 짐작만 해본다.
init script - unary operator expected