특정 시간에 실행해야 하는 bash 스크립트가 있는데 이 스크립트가 at
내가 해야 할 일을 거의 수행한다는 것을 알았습니다. 그러나 문제는 .bashrc를 통해 bash 스크립트에 명령줄 인수를 전달하는 방법을 잘 모르겠다는 것입니다 at
. 아래 명령은 다른 솔루션을 살펴본 후 얻은 결과입니다.
echo "-f job.sh argument" | xargs at now + 2 minutes
그러나 이것은 작동하지 않습니다. 누구든지 도와줄 수 있나요?
답변1
xargs
(및 )을 삭제합니다 -f
. at
사용하지 않으면 표준 입력에서 명령을 읽습니다 -f
.
~에서POSIX 사양at
:
유틸리티
at
는 표준 입력에서 명령을 읽고 나중에 실행하기 위해 진행 중인 작업으로 이를 함께 조합해야 합니다.
귀하의 경우:
echo 'job.sh argument' | at now + 2 minutes
이 작업은 job.sh argument
2분 이내에 수행됩니다.
또는,
at now + 2 minutes <<'AT_JOB'
job.sh argument
AT_JOB
at
실제로 매개변수를 작업에 전달할 수 없으므로( at -f job.sh argument ...
작동하지 않음) 위의 두 가지 변형 모두에서 매개변수를 작업의 일부로 만들어야 합니다.
답변2
at now + 2 minutes
/your/script -flags parameters
^D
내가 쓴 곳을 ^D
사용해야합니다Ctrl D
또는 프로그래밍 방식으로
echo '/your/script -flags parameters' | at now + 2 minutes
예
date
Fri 24 Jan 12:45:18 GMT 2020
echo 'date >test.txt' | at now + 2 minutes
warning: commands will be executed using /bin/sh
job 1173 at Fri Jan 24 12:47:00 2020