나는 다음 명령을 실행하곤 했습니다.
sudo -u elasticsearch -s "ulimit -Hn"
Ubuntu 11.10에서 시도할 때까지 사용자 elasticsearch에서 볼 수 있는 ulimit -Hn 값을 반환합니다. 거기에서 다음이 반환됩니다.
/bin/bash: ulimit -Hn: command not found
몇 가지 다른 명령을 시도했지만 매개 변수를 사용할 때 항상 "명령을 찾을 수 없습니다"라는 메시지가 나타납니다.
$ sudo -u elasticsearch -s "ls all.sh"
/bin/bash: ls all.sh: command not found
매개변수가 필요한 명령을 실행하는 방법에 대한 아이디어가 있습니까 sudo
?
답변1
큰따옴표를 제거해야 합니다. "ulimit -Hn"이라는 명령을 단일 명령(공백 등 포함)으로 실행하려고 시도합니다. 명령줄 의 마지막 옵션 -s
이어야 하며 다음 인수는 모두 실행에 전달됩니다 .sudo
sudo
$SHELL -c
sudo -u elasticsearch -s ulimit -Hn
현재 방식 에서는 명령줄에서 인수를 이스케이프 처리하여 공백이 포함된 인수를 전달할 수 있기 때문에 처리 방식이 -s
변경된 것 같습니다.$SHELL
$ touch '/tmp/foo bar'
$ sudo -s rm '/tmp/foo bar'
이전 매개변수 처리 방법에서는 '/tmp/foo bar'
매개변수를 두 부분으로 분할하여 명령을 중단했습니다.