특정 시간(초)의 지연을 두고 동일한 명령 "X"를 여러 번 실행하는 방법은 무엇입니까? [복사]

특정 시간(초)의 지연을 두고 동일한 명령 "X"를 여러 번 실행하는 방법은 무엇입니까? [복사]

여러 명령을 동시에 실행하는 방법을 알고 있지만 이제 필요한 것은 명령 실행 사이에 약간의 시간 지연을 두고 동일한 명령을 여러 번 실행하는 것입니다.

필요하다

  • 나는 이것에 스크립트를 사용하고 싶지 않습니다
  • 한 줄 명령으로 이 작업을 수행합니다.
  • Linux에서 실행해야 함
  • 명령이 실행되는 횟수를 제어해야 합니다.

답변1

이 라이너를 사용하여 원하는 작업을 수행할 수 있습니다.

$ cmd="..some command..."; for i in $(seq 5); do $cmd; sleep 1; done

$ date
Fri Nov 22 01:37:43 EST 2013

$ cmd="echo"; for i in $(seq 5); do $cmd "count: $i"; sleep 1;done
count: 1
count: 2
count: 3
count: 4
count: 5

$ date
Fri Nov 22 01:37:51 EST 2013

필요에 따라 명령 사이의 지연을 조정하고 원하는 명령으로 sleep ...변경할 수 있습니다 .cmd=...

seq cmd를 사용한 중괄호 확장

명령 대신 중괄호 확장을 사용하여 seq값 범위를 생성할 수도 있습니다. 중괄호 확장이 for루프와 동일한 셸에서 실행되므로 성능이 향상됩니다. subshell()을 사용하면 $(seq ..)루프에서 실행되는 셸 범위 내에서 하위 셸을 생성 하므로 성능이 약간 떨어집니다 .for

$ cmd="echo"; for i in {1..5}; do $cmd "count: $i"; sleep 1;done
count: 1
count: 2
count: 3
count: 4
count: 5

답변2

그리고 zsh:

repeat 10 {date; sleep 5}

명령 사이에 5초의 대기 시간을 두고 명령을 실행합니다(여기서는 date예).

대신 5초마다 실행하려는 경우(명령을 실행하는 데 5초 미만이 걸린다고 가정):

typeset -F SECONDS=0; repeat 10 {date; ((n=5-SECONDS)); SECONDS=0; LC_ALL=C sleep $n}

( sleep소수 초 구현을 지원한다고 가정).

답변3

date그러면 5초의 지연 시간을 두고 명령이 10번 실행됩니다 . 10을 seq 1 10원하는 횟수로 변경하고, date원하는 명령으로 바꾸고, 5를 변경하여 sleep 5지연 시간을 변경합니다.

for d in $(seq 1 10); do date; sleep 5; done;

관련 정보