리눅스 쉘 스크립트 구문 정리

이희주   
   조회 4663   추천 0    

 

#!/bin/sh

sleep 150

sh /jffs/scripts/ChkWAN.sh


1.  위의 구문대로라면 150초 뒤에 ChkWAN.sh가 실행되는게 맞는건가요?



2. 아래와 같은 상황이라면 총 3개의 명령어가 문제없이 작동하는지 궁금합니다.


sleep 150

sh /jffs/scripts/ChkWAN.sh

sh /jffs/scripts/rewan.sh


exec 200>/tmp/wancheck.lck

flock -n 200 || exit 0

sleep 120

ping -W 5 -c 1 8.8.8.8  >/dev/null 2>&1

if [ $? -eq 0 ]; then

   logger -t WANCHECK WAN OK

else

   logger -t WANCHECK WAN Failed. Restarting

   flock -u 200

   service restart_wan

fi








짧은글 일수록 신중하게.
"exec 200" 이거 맞게 쓰신 건지 모르겠지만 exec으로 실행되는 프로세스가 현재 스크립트를 실행하는 프로세스를 덮어버리기 때문에 이후의 명령들은 실행이 안됩니다. exec이 실패한 경우에는 실행됩니다.
     
이희주 2020-08
구글링하다가 이렇게 사용해보니 문제없다~~ 라는 글을 봐서 복사하여 사용해볼까 합니다.

자세한 기억은 나지 않지만 스크립트 중복실행 방지를 위한 조치도 되어 있다고 봤는데 그건인가 싶기도하네요ㅎ
     
이희주 2020-08
http://www.snbforums.com/threads/problem-rt-n66-with-cable-modem-dcm-475.22268/post-164550


해당 게시글입니다. 중복방지를 위해서는 flock구문을 사용했네요ㅎ
엠브리오 2020-08
그냥 단순 명령의 나열인데 제대로 동작하리라는 보장이 없죠.

해당 명령어가 없을수도 있고, 명령이 실패할수도 있습니다.

보통은 해당 명령이 실패하면 다음 명령으로 넘어가지 못하고 종료될겁니다.


QnA
제목Page 1887/5709
2014-05   5149290   정은준1
2015-12   1683816   백메가
2019-06   4280   조지연
2017-09   4281   tidd
2020-02   4281   나나나나나
2021-07   4281   가상화린이
2017-05   4281   이사장
2020-03   4281   highend
2017-05   4281   늘파란
2020-03   4281   박중석
2016-12   4281   수원서식
2015-10   4281   학분애비
2021-08   4281   SLALqHD
2018-07   4281   캔위드
2016-09   4281  
2017-05   4281   Dfens
2021-02   4281   dateno1
2017-03   4282   Tu7885
2015-05   4282   황혼을향해
2017-06   4282   윌라멧
2016-02   4282   끄라우드
2015-03   4282   깨모