![su를 사용하여 Bash에서 여러 명령 실행](https://linux55.com/image/1078/su%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20Bash%EC%97%90%EC%84%9C%20%EC%97%AC%EB%9F%AC%20%EB%AA%85%EB%A0%B9%20%EC%8B%A4%ED%96%89.png)
su -c
루트로 여러 명령을 실행하고 싶습니다 . 이를 위해 추가 스크립트를 사용하고 싶지 않습니다.
나는 다음을 시도했다:
su root -c "tcpdump -i wlan0 -s 1500 -w CCCCCC & " -c "ls -lh"
그러나 첫 번째 항목만 실행되고 ls
첫 번째 항목은 실행되지 않습니다.
나는 다음을 시도했다:
su root -c "tcpdump -i wlan0 -s 1500 -w CCCCCC & ; ls -lh;"
그런데 세미콜론에 오류가 있다고 나오네요 ;
.
어떻게 하는지 아시나요?
답변1
이 명령은 잘 작동합니다.
su root -c "date; ls -lh"
하지만 이 명령에서는:
su root -c "tcpdump -i wlan0 -s 1500 -w CCCCCC & ; ls -lh;"
&
이전에 그런 경험이 있었기 때문에 ;
오류가 발생하게 됩니다. 명령을 삭제 &
하고 다시 실행해 보십시오.
또는 다음과 같이 명령을 실행할 수 있습니다.
su root -c "(tcpdump -i wlan0 -s 1500 -w CCCCCC &); ls -lh"
답변2
~처럼아누바바 라고, 당신의
su root -c "tcpdump -i wlan0 -s 1500 -w CCCCCC & ; ls -lh;"
&
즉시 실행할 수 없기 때문에 명령이 실패합니다
;
. 셸에 직접 명령을 입력하면 이를 확인할 수 있습니다.
true & true
일하다true & ; true
작동하지 않습니다
tcpdump
명령을 백그라운드에서 실행하려면 다음 과 ;
같이 제거하십시오.
su root -c "tcpdump -i wlan0 -s 1500 -w CCCCCC & ls -lh;"
;
(결국 둘 중 하나도 필요하지 않지만 아프지는 않습니다).
답변3
나는 이 명령이 당신이 원하는 것을 얻을 것이라고 생각합니다 nohup
... tcpdump는 백그라운드에서 실행됩니다(앰퍼샌드가 필요하지 않음):
su root -c "nohup tcpdump -i wlan0 -s 1500 -w CCCCCC ; ls -lh"
답변4
&&
다음과 같이 명령을 구분하는 데 사용됩니다 .
$ su -c "ls && ls"