nbq
누군가 명령줄을 사용하여 한 줄 명령을 제출하는 방법을 말해 줄 수 있습니까? 여러 명령을 제출하면 Linux에서는 제대로 작동하지만 아래와 같이 nbq 모드에서는 작동하지 않습니다.
find /nfs/disks/test_dir/ -name .snapshot -prune -o -printf '%s %p\n'" | sort -nr | head -n 50 | tee log
이는 검사 영역에서 처음 50개 파일을 캡처할 때 Linux에서만 작동합니다.
nbq -P <pool> -q <slot> -c <machine> -J <logfile> --task-name checkdisk find /nfs/disks/test_dir/ -name .snapshot -prune -o -printf '%s %p\n'" | sort -nr | head -n 50 | tee log
파이프를 인식하지 않고 첫 번째 부분만 실행하기 때문에 실패합니다.
답변1
전체 파이프라인을 실행하면 nbq ... find ... | sort ...
셸은 다음과 같이 명령을 분할합니다.
nbq -P <pool> -q <slot> -c <machine> -J <logfile> --task-name checkdisk find /nfs/disks/test_dir/ -name .snapshot -prune -o -printf '%s %p\n' |
sort -nr |
head -n 50 |
tee log
따라서 보이는 유일한 것은 nbq
첫 번째 파이프 이전 부분입니다. 쉘이 이를 수행하는 것을 방지하고 대신 전체 라인을 넘겨주어야 합니다 nbq
. 명령을 구문 분석하고 실행하는 방법에 대한 문서가 없으면 nbq
올바른 방법을 알기가 어렵습니다.
원래 단일 행을 단일 인수로 사용하여
nbq
shell 을 실행하도록 지시할 수 있습니다 .sh
nbq -P <pool> -q <slot> -c <machine> -J <logfile> --task-name checkdisk \ sh -c "find /nfs/disks/test_dir/ -name .snapshot -prune -o -printf '%s %p\n' | sort -nr | head -n 50 | tee log"
또는 파이프 자체를 관리할 만큼 똑똑할 수도 있습니다(또는 작업을 수행하기 위해 다른 쉘을 시작할 가능성이 더 높음). 이 경우 (현재) 쉘로부터 보호하기 위해
nbq
각 쉘을 이스케이프하면 됩니다 .|
nbq -P <pool> -q <slot> -c <machine> -J <logfile> --task-name checkdisk \ find /nfs/disks/test_dir/ -name .snapshot -prune -o -printf '%s %p\n' \| sort -nr \| head -n 50 \| tee log
다른 모든 방법이 실패하면 "한 줄" 접근 방식을 포기하고 전체 파이프라인을 스크립트에 넣을 수 있습니다.
#!/bin/sh find /nfs/disks/test_dir/ -name .snapshot -prune -o -printf '%s %p\n' | sort -nr | head -n 50 | tee log
그런 다음
nbq
스크립트를 실행하십시오.nbq -P <pool> -q <slot> -c <machine> -J <logfile> --task-name checkdisk \ /path/to/top50.sh