Tin tức và phân tích của tất cả các thiết bị di động

Cách chạy tập lệnh và lệnh khi tạm dừng và tiếp tục trên Linux

Cách tốt nhất để chạy tập lệnh và lệnh trong khi tạm dừng và tiếp tục trên Linux trước khi tạm dừng (hoặc sau khi tiếp tục) là sử dụng hệ thống init systemd. Điều này là do hệ thống init tương tác trực tiếp với hệ thống năng lượng và hạt nhân. Học cách làm việc với công cụ này sẽ cho phép bất kỳ người dùng nào có nhiều quyền kiểm soát đối với hệ điều hành Linux,

Vui lòng hiểu rằng việc mày mò hệ thống init trên máy tính của bạn có thể nguy hiểm nếu bạn không biết mình đang làm gì. Hãy chắc chắn làm theo các hướng dẫn trong hướng dẫn này một cách cẩn thận nhất có thể để tránh những rủi ro có thể xảy ra.

Không phải mọi bản phân phối Linux hiện đại đều hỗ trợ init systemd. Một số sử dụng mới bắt đầu hoặc một cái gì đó hoàn toàn khác. Trong hướng dẫn này, chúng tôi sẽ tập trung vào systemd vì nó là hệ thống init phổ biến nhất. Nếu bạn muốn thực hiện tác vụ này trên thứ gì đó không hoạt động như chúng tôi đã đề cập trong bài viết này, hãy cân nhắc tham khảo hướng dẫn sử dụng hệ điều hành của bạn để biết hướng dẫn.

Lưu ý: Người dùng Debian nên thay thế tất cả các phiên bản của usr/lib/systemd/system-sleep bằng /lib/systemd/system-sleep/

Thực hiện lệnh trước khi đình chỉ

Để chạy tập lệnh trước khi tạm dừng, hãy đặt bất kỳ tệp tập lệnh bash nào vào /usr/lib/systemd/system-sleep/. Bản thân các tập lệnh có thể làm bất cứ điều gì, nhưng phải tuân theo một cú pháp nhất định. Bắt đầu bằng cách mở một cửa sổ đầu cuối. Sử dụng sudo -s, lấy root shell.

Sau đó mở trình soạn thảo văn bản nano trong thư mục ngủ của hệ thống:

nano /usr/lib/systemd/system-sleep/pre-suspend.sh

Thêm shebang vào đầu tập lệnh. Thêm điều này là rất quan trọng và nếu không có nó, trình thông dịch sẽ không thể đọc mã và lệnh một cách chính xác.

#!/bin/bash/

Phần tiếp theo của kịch bản là “nếu”. Điều này sẽ báo cho hệ thống điều khiển công suất rằng “nếu” hệ thống sắp tắt để tạm dừng, thì điều gì đó sẽ xảy ra. Dán mã dưới đây:

if [ "${1}" == "pre" ]; then
sh /path/to/script/to/run.sh

Thay đổi sh /path/to/script/to/run.sh trong tập lệnh thành bất cứ thứ gì bạn muốn chạy trên máy linux (hoặc máy chủ) ngay trước khi tắt để tạm dừng. Lưu ý rằng dòng ngay sau “if” không nhất thiết phải là sh /path/to/script/to/run.sh. Bạn cũng có thể sử dụng điều này để thực hiện các lệnh khác nhau. Miễn là bash có thể nhận ra nó là một lệnh, thì nó sẽ hoạt động.

Phần cuối cùng của kịch bản “trước khi treo” là thêm phần “nếu không”. Khía cạnh này của tập lệnh không cần phải sửa đổi vì trong ví dụ này, chúng tôi quan tâm đến việc thực hiện điều gì đó trước khi hệ thống gặp sự cố, chứ không phải trước khi thức dậy lần nữa.

elif [ "${1}" == "post" ]; then
# nothing goes here
fi

Sau khi mọi thứ được thêm vào tệp, hãy nhấn Ctrl + O để lưu nano.

Chạy lệnh sau khi tiếp tục

Thực hiện một lệnh sau khi tiếp tục hoạt động tương tự như chạy một cái gì đó trước khi tạm dừng. Sự khác biệt duy nhất là thay vì thêm lệnh sau phần “nếu” của tập lệnh, phần quan trọng nhất của mã sẽ xuất hiện sau dòng “elif”.

Để tạo tập lệnh sau khi tiếp tục, trước tiên hãy thêm shebang làm dòng đầu tiên.

#!bin/bash

Trên dòng tiếp theo, thêm phần “nếu” của tập lệnh.

if [ "${1}" == "pre" ]; then
# nothing goes here

Sau khi dán đoạn mã này vào tập lệnh bash của bạn, hãy đi xuống và dán phần “khác nếu”.

elif [ "${1}" == "post" ]; then
sh /path/to/script/to/run.sh
fi

Một lần nữa, bạn có thể viết bất cứ thứ gì trong dòng “elif”. Miễn là đó là thao tác lệnh systemd và bash bình thường, nó sẽ chạy nó.

Chạy các lệnh khi khởi động và tiếp tục

Nếu bạn muốn chạy hai lệnh ngược nhau; một trước khi đình chỉ và một khi tiếp tục nếu có thể. Điều này chỉ có nghĩa là điều chỉnh tập lệnh và thêm các dòng dưới cả hai dòng “if” và “elseif”.

Như thường lệ, hãy bắt đầu bằng cách đưa shebang vào tập lệnh cho trình thông dịch.

#!/bin/bash

Sau đó dán phần if của mã.

if [ "${1}" == "pre" ]; then
# replace with command

Bên dưới nếu, thay thế “# thay thế bằng lệnh” bằng bất kỳ lệnh nào bạn muốn thực thi ngay trước khi tắt hệ thống. Sau đó đi đến phần “elif” và làm tương tự.

elif [ "${1}" == "post" ]; then
#  replace with command
fi

Lưu tệp bằng Ctrl + O,

Cập nhật quyền và sử dụng tập lệnh

Tất cả các lệnh cần thiết đều có trong tệp script, nhưng bạn cần cập nhật các quyền trước khi có thể chạy nó. Mở terminal và root bằng: su hoặc sudo -s. Sau đó làm:

chmod +x /usr/lib/systemd/system-sleep/pre-suspend.sh

Từ giờ trở đi, bất cứ khi nào bạn tạm dừng hoặc tiếp tục, các lệnh tùy chỉnh bên trong tập lệnh sẽ chạy.

Lưu ý: Bạn có thắc mắc về chế độ ngủ của hệ thống? Kiểm tra hướng dẫn trong man systemd-suspend.service.