Tắt máy tự động Linux

- 7h, cu Hít muốn đi ăn cơm nhưng chương trình wget vẫn đang download dở đống file và chẳng biết bao giờ mới xong.
- 7h 01, cu Hít định gõ sudo shutdown -h 120 để máy sẽ tắt sau 120 phút, nhưng lúc ấy nhỡ chưa xong thì sao?!!!
- 7h 02, nghĩ...
- 7h 03, một ý tưởng vô cùng bình thường mà không tầm thường đã nảy ra, cu Hít thò tay vào test

Ý tưởng rằng, khi wget chạy, nó sẽ xuất hiện khi grep output của lệnh `ps`. Nếu nó không còn ở đó nữa nghĩa là đã xong, lúc ấy thì tắt máy.
Nếu chuyển đoạn trên sang bash sẽ là: lặp cho đến khi không còn thấy wget trong output của lệnh `ps`, rồi shutdown.

- 7h 04, mọi thứ đã sẵn sàng, gõ thôi:


sudo -s # phải thành root thì mới shutdown được chứ
while $(ps -ef | grep [w]get -q); do sleep 60; date >> /home/hvn/wget.log; done; shutdown -h now



câu lệnh trên tạo 1 vòng lặp vô hạn cho đến khi không còn tìm thấy wget trong output của lệnh `ps -ef`. Sau mỗi lần kiểm ra điều kiện ấy thì chờ 60 giây rồi kiểm tra lại, ghi thời gian kiểm tra vào 1 file text để biết khi nào xong, tắt máy khi vòng lặp while kết thúc.

- grep [w]get # giúp chỉ tìm dòng lệnh chứa từ khóa wget mà không tính đến lệnh grep vừa chạy.
grep -q # trả về 0 nếu tìm thấy từ khóa, trả về 1 nếu không tìm thấy

7h 05, có lẽ khỏi cần ghi thời gian ra file vì khi máy tắt chính là lúc download xong (sai lệch 1 phút), có thể kiểm tra bằng lệnh `last`


while $(ps -ef | grep [w]get -q); do sleep 60; done; shutdown -h now

Chúc bạn thành công!
Nguồn: http://www.familug.org/
Reactions

Post a Comment

0 Comments