파이프 라인에 할당 된 변수가 작동하지 않습니다.

재니스

포트 상태를 확인하는 셸 스크립트가 있습니다. 포트가 사용 중인지 확인한 후 종료됩니다.

#check port and kill
checkPort(){
     check=$(sudo netstat -nlpt | grep 2020 | awk '{print $6}')
    word="LISTEN"
    killProcess=$(sudo netstat -nlpt | grep 2020 | awk '{print $7}' |
                  sed 's/.\{5\}$//' | sort -u |  xargs -t kill -9)
    if [[ "$check" == "$word"  ]];
    then
        echo "killing the port 2020"
        $killProcess
     else
        echo "Not Listen"
    fi
}

$killProcess변수를 실행할 때 오류가 발생합니다. 그러나 조건 sudo netstat -nlpt | grep 2020 | awk '{print $7}' | sed 's/.\{5\}$//' | sort -u | xargs -t kill -9내부에 전체 명령을 넣으면 if정상적으로 작동합니다. 여기서 실수는 무엇입니까?

내가 얻는 오류 :

kill -9 

Usage:
 kill [options] <pid|name> [...]

Options:
 -a, --all              do not restrict the name-to-pid conversion to processes
                        with the same uid as the present process
 -s, --signal <sig>     send specified signal
 -q, --queue <sig>      use sigqueue(2) rather than kill(2)
 -p, --pid              print pids without signaling them
 -l, --list [=<signal>] list signal names, or convert one to a name
 -L, --table            list signal names and numbers

 -h, --help     display this help and exit
 -V, --version  output version information and exit

나는 넣어 xargs -i kill -kill {}대신 xargs kill -9. 잘 작동합니다. 좋은 습관입니까?

구문 var=$(command)이 실행 command되고 출력이 변수에 할당 됩니다 $var. 이것은 스크립트에서 다음 줄을 의미합니다.

killProcess=$(sudo netstat -nlpt | grep 2020 | awk '{print $7}' |
              sed 's/.\{5\}$//' | sort -u |  xargs -t kill -9)

것입니다 항상 이 파이프 라인 끝 실행 kill명령을하고, 그 출력을 지정합니다 $killprocess. 때문에 kill명령이 더 출력이 없습니다,이 라인은 나중에 아무것도하지 않을 것입니다 :

$killProcess

당신이 원하는 것은 killProcess="sudo netstat ... | xargs -t kill -9. 그러나 명령과 관련된 다른 문제도 있습니다. 우선 2020을 포함하는 모든 라인과 일치하지만 2020포트가있는 경우 만 원합니다 . 대신 PID라면 어떨까요?

다음은 몇 가지 변경 사항이있는 함수의 작동 버전입니다.

checkPort(){
  ## Get the target port. If none is given, default to 2020
  targetPort=${1:-2020}

  ## Collect the PID(s) that are listening on the port in the
  # array 'pids'.
  pids=( $(sudo netstat -nlpt | awk "\$4~/:$targetPort\$/{print \$7}" |
           sed 's|/.*||'))
  ## If no processes were listening, move on
  if [[ -z ${pids[0]} ]];
  then
    echo "No process listening on port $targetPort"
  ## If any processes were listening, kill them.
  else
    echo "killing process(es) listening on port $targetPort"
    ## First, try to kill the process gracefully
    kill "${pids[@]}"
    ## Check if any are still running
    for pid in "${pids[@]}"; do
      ## If it is still running
      if kill -0 "$pid"; then
        ## Kill it with fire
        kill -9 "$pid"
      fi
    done
  fi
}

이제 매개 변수를 사용할 수 있으므로 checkport포트 2020을 확인하기 위해 실행하고 checkport 22포트 22를 확인합니다. 또한 먼저 정상적으로 종료하려고 시도하고 ( kill -9절대적으로 필요한 경우가 아니면 항상 피해야 함 ) kill -9실패한 경우 에만 사용 합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

파이프에서 작동하지 않는 변수 할당

분류에서Dev

할당 된 쿼리 변수가 인식되지 않습니다.

분류에서Dev

jQuery slideDown이 동적으로 할당 된 ID가있는 요소에서 작동하지 않습니다.

분류에서Dev

재귀 함수에서 포인터 할당이 작동하지 않습니다.

분류에서Dev

바인딩 된 null이있는 MyBatis 변수가 작동하지 않습니다.

분류에서Dev

Python : 변수가 할당 전에 참조 된 while 루프 + 지역 변수에서 재 할당되지 않는 것 같습니다.

분류에서Dev

스칼라 매크로 : 변수에 할당 된 문자열 리터럴이 일치하지 않습니다.

분류에서Dev

echo 및 printf는 bash의 루프에 할당 된 변수를 인쇄하지 않습니다.

분류에서Dev

tempfile.TemporaryFile ()은 변수에 할당 된 후 sqlite3에서 작동하지 않습니다.

분류에서Dev

Python 변수 할당이 작동하지 않습니다.

분류에서Dev

"$ convert"가 집계 파이프 라인에서 작동하지 않습니다.

분류에서Dev

For 루프 범위가 작동하지 않음 : 잘못된 인수 개수 또는 잘못된 속성 할당

분류에서Dev

변수에 할당되었을 때 Gettimeofday가 작동하지 않습니다.

분류에서Dev

magrittr 파이프 라인의 벡터에 변수 이름을 동적으로 할당 할 수 있습니까?

분류에서Dev

결합 된 SMOTE 및 RandomUnderSampler 파이프 라인을 메인 파이프 라인에 공급할 수 없습니다.

분류에서Dev

상태 변수에 소품을 할당하려는 반응이 작동하지 않습니다.

분류에서Dev

함수 매개 변수가 변수에 할당되면 PHP가 작동하지 않습니다.

분류에서Dev

프로그래밍 방식으로 할당 된 경우 CardView.setRadius ()가 작동하지 않습니다.

분류에서Dev

드롭 다운 메뉴에서 선택한 항목이 할당 된 변수에 삽입되지 않습니다.

분류에서Dev

개체에 할당이 작동하지 않습니다.

분류에서Dev

파이썬 스레드가 변수를 인식하지 못합니다. 할당 전에 참조 된 지역 변수 '이미지'

분류에서Dev

기본 변수에 해당하는 기능이 작동하지 않습니다.

분류에서Dev

릴리스 파이프 라인에서 다음 오류가 발생합니다. 지정된 패키지에 대한 변환을 적용 할 수 없습니다. 변경 사항이 이미 패키지에 있습니다.

분류에서Dev

Databricks 스파크 UDF가 필터링 된 데이터 프레임에서 작동하지 않습니다.

분류에서Dev

문자열 값이 할당 된 변수의 urllib.urlopen ()이 작동하지 않습니까?

분류에서Dev

포인터에 변수 참조를 할당하면 의도하지 않은 동작이 발생합니다.

분류에서Dev

numpy의 변수 할당이 작동하지 않습니까?

분류에서Dev

PHP exec 명령이 변수가 포함 된 터미널 명령에서 작동하지 않습니다.

분류에서Dev

변수에 할당하지 않고 while 루프의 결과를 파이프 할 수 있습니까?

Related 관련 기사

  1. 1

    파이프에서 작동하지 않는 변수 할당

  2. 2

    할당 된 쿼리 변수가 인식되지 않습니다.

  3. 3

    jQuery slideDown이 동적으로 할당 된 ID가있는 요소에서 작동하지 않습니다.

  4. 4

    재귀 함수에서 포인터 할당이 작동하지 않습니다.

  5. 5

    바인딩 된 null이있는 MyBatis 변수가 작동하지 않습니다.

  6. 6

    Python : 변수가 할당 전에 참조 된 while 루프 + 지역 변수에서 재 할당되지 않는 것 같습니다.

  7. 7

    스칼라 매크로 : 변수에 할당 된 문자열 리터럴이 일치하지 않습니다.

  8. 8

    echo 및 printf는 bash의 루프에 할당 된 변수를 인쇄하지 않습니다.

  9. 9

    tempfile.TemporaryFile ()은 변수에 할당 된 후 sqlite3에서 작동하지 않습니다.

  10. 10

    Python 변수 할당이 작동하지 않습니다.

  11. 11

    "$ convert"가 집계 파이프 라인에서 작동하지 않습니다.

  12. 12

    For 루프 범위가 작동하지 않음 : 잘못된 인수 개수 또는 잘못된 속성 할당

  13. 13

    변수에 할당되었을 때 Gettimeofday가 작동하지 않습니다.

  14. 14

    magrittr 파이프 라인의 벡터에 변수 이름을 동적으로 할당 할 수 있습니까?

  15. 15

    결합 된 SMOTE 및 RandomUnderSampler 파이프 라인을 메인 파이프 라인에 공급할 수 없습니다.

  16. 16

    상태 변수에 소품을 할당하려는 반응이 작동하지 않습니다.

  17. 17

    함수 매개 변수가 변수에 할당되면 PHP가 작동하지 않습니다.

  18. 18

    프로그래밍 방식으로 할당 된 경우 CardView.setRadius ()가 작동하지 않습니다.

  19. 19

    드롭 다운 메뉴에서 선택한 항목이 할당 된 변수에 삽입되지 않습니다.

  20. 20

    개체에 할당이 작동하지 않습니다.

  21. 21

    파이썬 스레드가 변수를 인식하지 못합니다. 할당 전에 참조 된 지역 변수 '이미지'

  22. 22

    기본 변수에 해당하는 기능이 작동하지 않습니다.

  23. 23

    릴리스 파이프 라인에서 다음 오류가 발생합니다. 지정된 패키지에 대한 변환을 적용 할 수 없습니다. 변경 사항이 이미 패키지에 있습니다.

  24. 24

    Databricks 스파크 UDF가 필터링 된 데이터 프레임에서 작동하지 않습니다.

  25. 25

    문자열 값이 할당 된 변수의 urllib.urlopen ()이 작동하지 않습니까?

  26. 26

    포인터에 변수 참조를 할당하면 의도하지 않은 동작이 발생합니다.

  27. 27

    numpy의 변수 할당이 작동하지 않습니까?

  28. 28

    PHP exec 명령이 변수가 포함 된 터미널 명령에서 작동하지 않습니다.

  29. 29

    변수에 할당하지 않고 while 루프의 결과를 파이프 할 수 있습니까?

뜨겁다태그

보관