Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [Hệ điều hành Unix] crontab: sắp lịch job theo giờ chạy

    Mỗi dòng crontab: phút giờ ngày tháng thứ lệnh.... Bỏ qua dòng #, dòng trống, dòng KEY=VALUE.

    Chỉ xét các job có trường 1 (phút) và trường 2 (giờ) đều là số nguyên (chỉ gồm chữ số, không chứa *, /, ,, -). Với các job đó, in ra dòng:

    <giờ>:<phút_2_chữ_số> <lệnh>
    

    trong đó phút được đệm 0 thành 2 chữ số (vd 5 → 05), giờ giữ nguyên (không đệm), và <lệnh> là phần từ trường 6 trở đi (các từ cách nhau một dấu cách). Kết quả sắp xếp tăng dần theo giờ rồi theo phút (số học); nếu trùng cả giờ và phút thì giữ thứ tự input (ổn định).

    Ví dụ:

    Input:

    30 9 * * * /run/a.sh
    0 9 * * * /run/b.sh
    */5 * * * * skip-me
    

    Output:

    9:00 /run/b.sh
    9:30 /run/a.sh
    
    • Định dạng đầu vào:

      Nhiều dòng crontab; chỉ lấy job có phút và giờ là số nguyên.

    • Ràng buộc đầu vào:

      0 ≤ phút ≤ 59, 0 ≤ giờ ≤ 23 đối với job hợp lệ. 1 ≤ số dòng ≤ 1000.

    • Định dạng đầu ra:

      Dòng <giờ>:<phút 2 chữ số> <lệnh> sắp tăng dần theo giờ rồi phút (ổn định khi trùng).

    Ví dụ:

    Đầu vào:

    30 9 * * * /run/a.sh
    0 9 * * * /run/b.sh
    */5 * * * * skip-me
    

    Đầu ra:

    9:00 /run/b.sh
    9:30 /run/a.sh

    Giải thích:

    Hai job hợp lệ: phút/giờ là số; sắp theo giờ rồi phút → `9:00 /run/b.sh` trước `9:30 /run/a.sh`; dòng `*/5` bị loại.

    Đang tải editor...