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 세션 내에서 특정 변수를 최신 상태로 유지하기 위해 매분마다 파일을 얻는 것입니다.
- 너할 수 없다하위 프로세스 내에서 이 작업을 수행합니다.
- 너할 수 없다상위 프로세스에서 이 작업을 수행합니다.
- 너할 수 없다영향을 미치려는 프로세스가 아닌 다른 프로세스에서 이 작업을 수행하십시오.
프로세스의 환경을 변경하는 것은 프로세스의 개인 메모리를 변경하는 것과 동일합니다(사실 이것이 바로 관련됩니다). 절대 허용되지 않습니다! 그렇기 때문에산업용 컴퓨터정말 절묘한 영역입니다.