วิธีรันแอพพลิเคชั่นตามเวลาที่ตั้งไว้ในเชลล์


12

ถ้าและอย่างไรเป็นไปได้Terminalอย่างไรที่จะได้รับแอปพลิเคชันให้ทำงานเป็นเวลา 30 วินาทีก่อนที่จะถูกปิดและสะท้อนบันทึกของกระบวนการนั้น


@JacobVlijm มันควรจะทำงานเป็นเชลล์สคริปต์เนื่องจากความสามารถในการพกพาของภาษาส่วนใหญ่เนื่องจากพื้นที่การใช้งานที่ตั้งใจไว้เป็นบริการ CI
ir-g

1
@ ir-g คุณสามารถใช้คำสั่งหมดเวลา เช่นคำสั่ง timeout 30s
mcantsin

คำตอบ:


19

คุณอาจต้องการใช้คำสั่งtimeout

timeout -k 10s 30s command

ซึ่งจะรันคำสั่งเป็นเวลา 30 วินาทีและฆ่ามันหลังจาก 10 วินาทีหากยังคงทำงานอยู่ - ตรวจสอบ manpage เพื่อดูตัวเลือกเพิ่มเติม


1
@ ir-g ยินดีต้อนรับ คุณอาจต้องการตรวจสอบคำสั่งwatchซึ่งคล้ายกันและใช้งานง่ายมากในบรรทัดคำสั่ง
mcantsin

2
ขอบคุณสำหรับตัวชี้ที่watchทำให้ฉันเป็นคำสั่งที่น่าสนใจ จะมามีประโยชน์ ...
ir-g

3

นี่คือสองวิธี (แต่timeoutคำสั่งที่แนะนำโดย mcantsinน่าจะดีกว่า):

  1. เรียกใช้งานคำสั่งในพื้นหลังด้วยวิธีที่ PID นั้นถูกบันทึกไว้$!และคุณสามารถใช้มันเพื่อฆ่ามันหลังจากเวลาที่กำหนด:

    command &
    sleep 30 && kill $!
    
  2. เรียกใช้คำสั่งและใช้pkillหรือkillallเพื่อฆ่า ข้อควรระวัง: สิ่งนี้ถือว่ามีเพียงคำสั่งเดียวที่ใช้ชื่อนั้นฉันกำลังใช้firefoxเป็นตัวอย่าง:

    firefox &
    sleep 30 && pkill firefox
    

ฉันไม่รู้ว่าคุณหมายถึงอะไรโดย "บันทึกของกระบวนการนั้น" แต่ข้อผิดพลาดมาตรฐานของกระบวนการสามารถบันทึกลงไฟล์command 2> logfile.txtได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.