Cách chạy ứng dụng trong một thời gian đã đặt trong shell


12

Nếu và Làm thế nào để có thể Terminal, để ứng dụng chạy trong 30 giây, trước khi bị buộc đóng và lặp lại nhật ký của quá trình đó?


@JacobVlijm Nó sẽ chạy một cách lý tưởng như một tập lệnh shell do tính di động của ngôn ngữ, chủ yếu là khu vực sử dụng dự định là một dịch vụ CI.
ir-g

1
@ ir-g bạn có thể sử dụng lệnh hết thời gian . ví dụ: lệnh hết thời gian 30 giây
mcantsin

Câu trả lời:


19

Bạn có thể muốn sử dụng lệnh hết thời gian .

timeout -k 10s 30s command

Nó sẽ chạy lệnh trong 30 giây và giết nó sau 10 giây nếu vẫn chạy. - Kiểm tra trang chủ để có thêm tùy chọn.


1
@ ir-g bạn được chào đón. Bạn cũng có thể muốn kiểm tra lệnh xem , tương tự và cũng rất dễ sử dụng trong dòng lệnh.
mcantsin

2
Cảm ơn con trỏ đó, watchtấn công tôi như một lệnh rất thú vị. Có thể có ích ...
ir-g

3

Dưới đây là hai cách (nhưng timeoutlệnh được đề xuất bởi mcantsin có lẽ tốt hơn):

  1. Khởi chạy lệnh trong nền, theo cách đó, PID của nó được lưu vào $!và bạn có thể sử dụng lệnh đó để giết nó sau thời gian đã chỉ định:

    command &
    sleep 30 && kill $!
  2. Khởi chạy lệnh và sử dụng pkillhoặc killallđể giết nó. THẬN TRỌNG: Điều này giả sử rằng chỉ có một lệnh có tên đó đang chạy, tôi đang sử dụng firefoxlàm ví dụ:

    firefox &
    sleep 30 && pkill firefox

Tôi không biết ý của bạn là "nhật ký của quá trình đó" nhưng lỗi tiêu chuẩn của quy trình có thể được lưu vào một tệp command 2> logfile.txt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.