그래서 저는 실행하고자하는 것에 대한 몇 가지 선택 사항을 알려주는 메뉴 프로그램을 만들었습니다. 문제는 예를 들어 백그라운드에서 프로세스를 실행하는 옵션 "b"가 있어야한다는 것입니다. 따라서 메뉴가 다시 나타나고 백그라운드 작업이 실행되는 동안 다른 선택을 할 수 있습니다. 나는 교수님의 예에서 수면을 사용한다고 말하고 백그라운드에서 실행해야하는 과정에 대해 혼란 스럽습니다. 그러나 수면을 사용한다고 말하면 저는 그것을 제 경우에 넣었습니다. 나는 정확한 결과를 얻지 못합니다.BASH를 사용하여 만든 메뉴 프로그램에서 백그라운드 프로세스를 실행하려면 어떻게합니까?
while [ true ]
do
clear
cat <<EOF
M A I N M E N U
========= =========
$(date)
l> -- List all file names in current directory
o> -- sign on this session
f> -- sign off this session
c> -- check if a file exists and view its contents
b> -- background job
s> -- interactive shell
d> -- shows date
q> -- quit
Please choose....or else..
EOF
read ans
case $ans in
l) ls -a
sleep 2
;;
o) signon
;;
f) signoff
;;
c) chk
sleep 2
;;
b) sleep 10 &
;;
d) date
;;
q) break
;;
esac
done
그래서 이것은 yall의 일부가 알아 내기가 쉽지만 프로그래밍에 익숙하지 않고 지옥처럼 혼란 스럽습니다. 프로그램을 실행하면 처음 세 가지 선택이 잘 실행되고, chk 파일은 제대로 작동하지 않으며, 나타나는 날짜는 표시되지 않지만 더 중요한 것은 배경 프로세스가 작동하지 않는 것입니다. 나는 내가 프로세스와 배경 작업을 오해하고 있다고 생각하여 내가하는 일에 대한 도움이나 추가 설명이 크게 감사 할 것입니다! 또한, 여기에 쓰레기 같이 보이는 코드에 대해 유감스럽게 생각합니다. 실제로 화면에서 코드를 한 조각으로 가져 오는 방법을 마스터하지 않았습니다. `
'b'옵션 다음에 실제로 10 초 지연이 발생 했습니까? 디버그 라인을 추가 할 수도 있습니다 :'ps -ef | grep "수면 10"; sleep 4'. 'clear'는 관련 정보를 지우고 ('command not found'),'clear'없이 디버그 할 수 있습니다. –
그래서 나는이 엉덩이에 대해 거꾸로 생각하고 있었고, 다시이 모든 것을 처음 접했기 때문에 나를 도와주고 분명히 어리석은 질문을 해 주셔서 감사합니다. 그래, 물론, 내가 백그라운드에서 10 초 동안 잠을 자면 나는 그것을 볼 수 없을거야 !! 젠장! 나는 새로운 쉘을 선택할 수있는 또 다른 옵션을 메뉴 프로그램에 만들었고, 새로운 쉘을 선택했을 때 새로운 쉘을 시작하기 전에 백그라운드에서 20 초 동안 sleep을 실행하는 "b"를 선택했다고 가정했다 , 나는 'ps'할 수 있고, 잠이 아직도 달리고있는 것을 안다. 그래서 나는 너에게 감사의 말을 전했다. – Ooobunwhoubuntu