새 터미널 창에서 스크립트를 실행하고 30초 후에 닫는 방법

새 터미널 창에서 스크립트를 실행하고 30초 후에 닫는 방법

나는 기본 터미널 흰개미를 사용하여 xmonad를 실행하는 스크립트를 작성했습니다. 중요한 경우 :) xmonad에 해결책이 있을 수도 있습니다.

, ((altMask, xK_x),
     spawn "termite --hold -e /home/emre/pipix.sh")

터미널에 입력하면

timeout 30 script.sh

작동하는 것 같습니다. 하지만 내가 입력할 때

termite --hold -e timeout 5 pipi.sh

이 경고 메시지가 나타납니다.

Try 'timeout --help' for more information.

내가 뭘 잘못하고 있는 걸까요? 아니면 어떻게 작동하게 할 수 있나요?

답변1

일반적으로 CLI에서 단일 옵션으로 전달되는 명령에 공백이 있는 경우 프로그램이 이것이 timeout 5 pipi.sh세 개의 개별 입력 옵션이 아니라 단일 명령임을 알 수 있도록 명령을 따옴표로 묶어야 합니다.

termite --hold -e "timeout 5 pipi.sh"

이것은 명령줄에서 프로그램에 코드 줄을 전달하는 일반적인 문제를 기반으로 한 내 추측입니다.

답변2

이 글을 보고 여기에 올려야겠다는 생각이 들었습니다.

https://www.tecmint.com/run-linux-command-with-time-limit-and-timeout/

명령에 시간 제한을 설정해야 하는 사람은 "시간 제한"을 설치하여 명령 전에 사용해야 합니다.

광산은 xmonad.hs에서 다음과 같습니다.

  , ((altMask, xK_c),
     spawn "timelimit -t25 termite --hold -e /home/emre/pipi.sh")

답변3

다음은 테스트되었으며 예상대로 작동합니다.

#!/bin/sh
temp=$$

(sleep 30; kill $temp; exit) &

echo "Hello. Testing timeout with ed."
# Your never ending code goes here instead. 
# Because ed is a new process you will have to kill it.
# killall ed would be replaced with the program name. killall XXX
(sleep 30; killall ed; exit) &

# run ed and put it in append mode and add a few characters.
# ed is never given the . and q! commands so it waits. 
ed

a

1234

echo "Should not get here"
# Should get a Terminated message and script exits in 30 seconds.
# And the process for  ed  is killed is in 30 seconds..

시야

관련 정보