프로그램을 X 번 실행


18

터미널에서 프로그램을 X 번 어떻게 실행합니까?

bin / bash txt를 수행해야한다는 것을 읽었지만이 X 번을 실행하는 방법을 모르겠습니다.


스크립트, 애플리케이션, 무엇입니까? 오류가 발생하면 어떻게됩니까? 실행 후 닫히나요? 닫혀 있는지 확인해야합니까?
Jacob Vlijm

그냥 클릭, xdotool 클릭 오류가 발생할 수 있다고 생각하지 않습니다.
user3597989

@ KasiyA : 모든 답변이 영원히 반복되는 것은 아닙니다. 여기서 OP는 고정 된 수의 루프를 요구합니다.
Sylvain Pineau

4
또는 Blufter 's : askubuntu.com/a/508752/158442- 둘 다 거기에 속하지는 않지만 여기에 있습니다. : D
muru

2
@ KasiyA : Ask의 대답은 여기에 없어야합니다 터미널에서 x 간격마다 명령
Sylvain Pineau

답변:


24

xargs및 을 사용할 수 있습니다 seq. 일반적으로:

seq nr_of_times_to_repeat | xargs -Iz command

예를 들면 다음과 같습니다.

seq 10 | xargs -Iz xdotool click 1

xdotool click 1명령을 10 번 실행합니다 .


1
가장 간단한 것은 말할 것도없고 아마도 가장 우아한 솔루션 일 것입니다.
세스

나는 이것이 파이프 특성을 설명하기에 정말 좋은 예라고 생각합니다.
PascalVKooten

10

터미널을 열고 다음 bash명령을 사용하십시오 .

for i in {1..5}; do xdotool click 1; done

약간의 장황함과 1 초 지연으로 :

for i in {1..5}; do echo click \#$i && xdotool click 1 && sleep 1; done
click #1
click #2
click #3
click #4
click #5

'do'와의 sintax 오류 ..
user3597989

그것은 나를 위해 작동, 다시 확인할 수 있습니까?
Sylvain Pineau

@ user3597989 아, 알아요, 첫 번째를 제거하십시오 $. 단지 같은 쉘 프롬프트를 나타 내기 위해 sylvain@sylvain-ThinkPad-T430s:~$있습니다. 우리는 일반적으로 명령 결과와 명령을 구별하기 위해 명령 줄 답변에 추가합니다.
Sylvain Pineau

@ user3597989 : 혼란을 피하기 위해 쉘 프롬프트를 제거했습니다
Sylvain Pineau

5

이것은해야합니다 :

#!/bin/bash

x=1
while [ $x -le 10 ]
do
  <command to run>
  x=$(( $x + 1 ))
done

여기서 10은 명령을 실행하는 횟수입니다.

약간의 휴식을 취해야하는 경우 :

#!/bin/bash

x=1
while [ $x -le 10 ]
do
  <command to run>
  sleep 1
  x=$(( $x + 1 ))
done

스크립트를 빈 파일로 복사하고 명령으로 바꾸고 <command to run>xdotool저장 run_xdotool.sh한 후 명령으로 실행하십시오.

sh /path/to/run_xdotool.sh

또는 실행 가능하게 만들고 다음을 통해 간단히 실행할 수 있습니다.

/path/to/run_xdotool.sh

또 다른 해결책 : xdotool의 내장 반복 옵션 사용

클릭에 사용한다고 언급 했으므로 가장 쉬운 방법은 xdotool자체 내장 반복 옵션을 사용하는 것입니다. 형식은 다음과 같습니다.

xdotool click --delay <delay> --repeat <repeats> <button>
(delay in milliseconds between the clicks)

1 초 간격으로 10 번의 마우스 클릭 (버튼 1)을하려면 명령은 다음과 같습니다.

xdotool click --delay 1000 --repeat 10 1

5

GNU Parallel이 있다면 다음을 실행할 수 있습니다.

seq 10 | parallel -N0 doit

모든 새 컴퓨터에는 여러 개의 코어가 있지만 대부분의 프로그램은 본질적으로 직렬이므로 여러 개의 코어를 사용하지 않습니다. 그러나 많은 작업을 매우 병렬화 할 수 있습니다.

  • 많은 파일에서 동일한 프로그램을 실행
  • 파일의 모든 줄에 대해 동일한 프로그램을 실행하십시오.
  • 파일의 모든 블록에 대해 동일한 프로그램을 실행하십시오.

GNU Parallel은 일반적인 병렬 처리기이므로 동일한 컴퓨터 또는 ssh 액세스 권한이있는 여러 컴퓨터에서 작업을 병렬로 쉽게 실행할 수 있습니다.

4 개의 CPU에서 32 개의 서로 다른 작업을 실행하려는 경우 병렬화하는 간단한 방법은 각 CPU에서 8 개의 작업을 실행하는 것입니다.

간단한 예약

대신 GNU Parallel은 프로세스가 완료되면 새로운 프로세스를 생성하여 CPU를 활성화하여 시간을 절약합니다.

GNU 병렬 스케줄링

설치

개인 설치에는 루트 액세스가 필요하지 않습니다. 다음을 수행하여 10 초 안에 완료 할 수 있습니다.

(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash

다른 설치 옵션은 http://git.savannah.gnu.org/cgit/parallel.git/tree/README를 참조하십시오.

더 알아보기

더 많은 예를보십시오 : http://www.gnu.org/software/parallel/man.html

소개 동영상 시청 : https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

튜토리얼을 따라 진행 하십시오 : http://www.gnu.org/software/parallel/parallel_tutorial.html

지원을 받으려면 이메일 목록에 가입 하십시오 : https://lists.gnu.org/mailman/listinfo/parallel


1
나는 병렬을 좋아하고 가능한 곳에서 사용법을 제안하려고합니다. 특정 옵션에 불구하고 하나의 질문 : 당신은 왜 대신이 양식을 제안하는 것을 선호 않았다parallel -N0 doit ::: {1..10}
필립 -Zyan K Lee- STOCKMANN

1
{1..10}(t) CSH / 생선 / 재에 일을하지 않으며, {1..10}이 작동하지 않습니다 그래서 구조는, 명령 행의 길이에 의해 제한됩니다 {1..1000000000}반면 seq 1000000000잘 작동합니다. 그러나 대부분의 상황 {1..10}에서 예상대로 작동하며 종종 사용합니다.
Ole Tange

4

변수를 사용하여 끝점을 지정할 수 for있는 중괄호 확장 버전 ( {1..5}) 보다 이점이 있는 C 스타일 루프를 사용할 수 있습니다 . 외부 유틸리티 ( seq)를 사용하는 것보다 버전이 좋습니다 .

t=5
for ((x = 1; x <= t; x++))
do
    xdotool click 1
done

한 줄에 모두 :

t=5; for ((x = 1; x <= t; x++)); do xdotool click 1; done

또는 루프없이 수행 할 수 있습니다 (이 특정 유틸리티 및 기능의 경우).

xdotool click --repeat 5 --delay 50 1

0

간단히 watch 명령을 사용할 수 있습니다.

watch -n x <your command>

x를 시간으로 초 단위로 변경하십시오.

예 :

watch -n 1 xdotool click 1 

따라서 xdotool click 1은 1 초마다 반복되며 완료되면 종료합니다.


4
나는 질문이 정해진 횟수만큼 명령을 실행하는 것과 관련이 있다고 생각합니다 .
Jacob Vlijm
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.