Bash에서 예약된 백그라운드 작업 실행

Bash에서 예약된 백그라운드 작업 실행

30초마다 bash에서 명령을 실행하고 백그라운드 작업으로 실행하고 싶습니다. 형태이 게시물, watch 명령을 사용하는 것이 유용하다고 생각합니다. 그런데 배경으로 설정하려고 할 때마다 멈춥니다.

watch -n 1 'date >> dateFile.txt'

일하다. cat dateFilet.txt줄이 많이 보이네요 .

watch -n 1 'date >> dateFile.txt' &

반품

[1]+ Stopped watch -n 1 'date >> dateFile.txt'

실행하면 bg동일한 줄이 다시 반환됩니다.

내가 뭘 잘못했나요? 어떻게 해결할 수 있나요? 내가 궁극적으로 원하는 것은 bash 세션 내에서 특정 변수를 최신 상태로 유지하기 위해 매분마다 파일을 얻는 것입니다.

답변1

Bash에서는 다음 명령을 사용하여 쉽게 이 작업을 수행할 수 있습니다.PROMPT_COMMAND변수( man bash):

프롬프트 명령

설정된 경우 이 값은 각 기본 프롬프트가 실행되기 전에 명령으로 실행됩니다.

따라서 다음과 같은 것을 추가하면 ~/.bashrc:

PROMPT_COMMAND=". /path/to/file"

이 파일에 정의된 모든 변수를 사용할 수 있습니다.

답변2

당신의 crontab:

* * * * * date >> dateFile.txt & sleep 30; date >> dateFile.txt &

꽤 간단하지 않나요? =)

(명령어의 전체 경로를 입력하는 것이 가장 좋습니다 date.)

또 다른 해결책:

while true; do date >> dateFile.txt & sleep 30; done

답변3

내가 궁극적으로 원하는 것은 bash 세션 내에서 특정 변수를 최신 상태로 유지하기 위해 매분마다 파일을 얻는 것입니다.

  • 할 수 없다하위 프로세스 내에서 이 작업을 수행합니다.
  • 할 수 없다상위 프로세스에서 이 작업을 수행합니다.
  • 할 수 없다영향을 미치려는 프로세스가 아닌 다른 프로세스에서 이 작업을 수행하십시오.

프로세스의 환경을 변경하는 것은 프로세스의 개인 메모리를 변경하는 것과 동일합니다(사실 이것이 바로 관련됩니다). 절대 허용되지 않습니다! 그렇기 때문에산업용 컴퓨터정말 절묘한 영역입니다.

관련 정보