매우 짧은 간격으로 명령을 주기적으로 실행하고 리턴을 얻으려면 어떻게해야합니까?


12

약 5 초 간격으로 특정 명령을 호출해야합니다. 백그라운드에서 실행되는 데몬 / 프로세스 또는 이와 비슷한 것을 어떻게 설정합니까? 나는 cronjobs을 보았지만 최소 간격은 1 분 인 것 같습니다. 모든 조언을 부탁드립니다;)

Fedora는 시스템입니다.

명령은 bashscript 일 것이므로 "watch"는 그렇게하지 않을 것이라고 생각합니다.

답변:


10
(
  while true
  do
    your-command-here
    sleep 5
  done
) &
disown

무엇을 제거해야합니까? 내가없이 달리면 어떻게 되나요?
한스

@Marcel, disown쉘 작업 테이블에서 마지막 작업을 제거하여 요청한대로 일종의 데몬으로 만듭니다. 터미널에 연결되어 있고 동일한 프로세스 그룹에 있기 때문에 실제 데몬은 아니지만 쉘을 닫은 후에도 계속 실행됩니다.
Juliano

좋아요, 잘 작동합니다. D 호기심을 위해서 어떻게 데몬을 "만들"겠습니까?
한스

@Marcel의 간단한 방법은 C 또는 다른 언어의 라이브러리 ( 데스크 스크립트가 아닌 ) 에서 daemon (3) 을 호출 하는 것입니다. 이것은 어려운 길 입니다.
Juliano

14

'시계'가 작동하지 않는 이유는 무엇입니까?

$ cat periodic.sh
#!/bin/bash
echo $(date)
$ chmod +x periodic.sh

$ watch -n 5 ./periodic.sh

로그 아웃하면 어떻게 되나요? 스크립트는 계속 실행되어야합니다.
한스

중지되지만 nohup watch -n 5 ./periodic.sh > periodic.log &출력을 사용 하고 저장할 수 있습니다 .
naufraghi

배관은 "sh -c"에 "명령어가 주어지기 때문에 ''따옴표를 사용하십시오. 즉, 원하는 효과를 얻으려면 추가 따옴표를 사용해야 할 수도 있습니다"
andrej

2

아마도 nohup과 함께? 쉘을 닫은 후에 작업을 실행하도록 설계되었습니다.

화면을 사용할 수도 있습니다.


1

watch명령은 귀하의 경우에 적합합니다. 터미널 멀티플렉서 (예 : tmux, screen 등)를 사용하고 다음을 사용하여 명령을 실행하십시오

watch -n 5 ./script.sh

이 경우 시스템에 대한 터미널 또는 ssh 연결을 닫아도 스크립트는 계속 실행됩니다.

이 방법의 유일한 제한은 스크립트가 해당 시간 간격 내에 실행을 완료 한 경우에만 5 초마다 실행된다는 것입니다.


OP가 자신의 의견으로 watch는 그렇지 않다고 명시 적으로 언급 했으므로 귀하의 답변이 왜이 한계를 극복했는지 또는 OP가 watch작업에 부적합하다고 오해되었다고 생각하는 시점을 설명하십시오 .
AdminBee
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.