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

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다