GNU 화면이 이미 존재하는 경우 다시 연결하고, 그렇지 않으면 생성합니다.

GNU 화면이 이미 존재하는 경우 다시 연결하고, 그렇지 않으면 생성합니다.

저는 이렇게 하려고 합니다. 이름이 지정된 GNU 화면이 worker이미 존재하면 다시 연결하고, 그렇지 않으면 를 통해 시작하세요 python example.py.

나는 시도했다:

if [ls /var/run/screen/S-root/ |grep -Fxq worker] then screen -r worker else cd /home/www/example/; screen -S worker python example.py fi

하지만 작동하지 않는 것 같습니다.

문법에 문제는 없나요?

답변1

screen -ls사용하거나 더 이해하기

screen -S worker -x || { cd /home/www/example; screen -S worker python example.py; }

하지만 코드의 오류는

  1. 불필요함 [(주변에 공간이 필요함)

    if [ls /var/run/screen/S-root/ |grep -Fxq worker]
    

    이어야 한다

    if ls /var/run/screen/S-root/ | grep -Fxq worker
    
  2. 이전에 누락 ;/개행 문자then

    |grep -Fxq worker] then
    

    이어야 한다

    | grep -Fxq worker; then
    
  3. 이전에 누락 ;/개행 문자else

     then screen -r worker else
    

    이어야 한다

     then screen -r worker; else
    
  4. 이전에 누락 ;/개행 문자fi

    python example.py fi
    

    이어야 한다

    python example.py; fi
    

관련 정보