Иногда вам может понадобиться, чтобы компьютер не спал, чтобы выполнить давно запущенные скрипты или другие процессы, требующие бодрствования системы. Простой способ сделать это - отключить режим сна в системе или запустить скрипт, который не даст компьютеру заснуть. Преимущество создания скрипта заключается в том, что вы можете включить его в свою программу или приложение, так что ваш компьютер будет бодрствовать только в том случае, если это приложение не запущено, а не постоянно. В этой статье мы узнаем, как создать сценарий, чтобы ваш компьютер не спал. Для этой цели можно использовать практически любой язык сценариев. Мы будем использовать python для создания нашего скрипта.
Скрипт для поддержания компьютера в бодрствующем состоянии
В принципе, наш скрипт будет принимать количество минут, в течение которых компьютер будет бодрствовать (stop_time), и продолжать щелкать правой кнопкой мыши каждую минуту, пока не закончится время. Вы всегда можете настроить скрипт на выключение или перезагрузку по истечении указанного времени. Он также регистрирует текущее системное время и делает снимок экрана перед выключением.
В цикле мы сначала устанавливаем счетчик в 0. Затем наш скрипт сначала будет спать в течение 60 секунд, затем щелкнет правой кнопкой мыши, чтобы компьютер проснулся, и увеличит счетчик на 1, пока не достигнет значения stop_time. Затем он сохранит файл журнала, сделает снимок экрана и выключится/перезагрузится в зависимости от конфигурации пользователя.
Создайте пустой файл python.
1 | nano stay_awake.py |
Сначала мы определим среду выполнения (строка 1), а затем импортируем необходимые библиотеки в наш файл. Поэтому добавьте в него следующие строки кода.
1 2 3 4 5 | #!/usr/bin/python import argparse import pyautogui import time import os |
Вот для чего нужны эти библиотеки:
- argparse : передача аргументов с помощью этой библиотеки
- pyautogui : генерировать нажатия правой кнопки мыши и делать снимки экрана
- time : получение текущего системного времени
- os : для выключения или перезапуска системы.
Далее мы определим функцию timer, которая будет принимать два входных параметра, stop_time, т.е. количество минут, в течение которых компьютер будет бодрствовать, и действие, которое должно быть выполнено по истечении времени. Мы также запустим счетчик.
1 2 | def timer(stop_time, action): counter = 0 |
Далее мы запустим цикл, пока счетчик не достигнет времени stop_time. На каждой итерации мы будем увеличивать счетчик на 1.
1 2 | while stop_time > counter: counter = counter + 1 |
Поскольку приведенный выше код будет выполняться в течение секунды, мы добавим следующие строки, чтобы заставить наш интерпретатор python спать в течение 60 секунд в каждой итерации после увеличения счетчика цикла.
1 2 | time.sleep(60) pyautogui.click(button='right') |
Мы используем функцию time.sleep(), чтобы заставить интерпретатор заснуть на 60 секунд. Мы также используем pyautogui, чтобы сделать щелчок правой кнопкой мыши.
Следующие несколько строк кода необязательны, и вы можете пропустить их или изменить в соответствии с вашими требованиями. Здесь мы просто фиксируем текущую системную дату и время и записываем их в файл журнала. Мы также делаем снимок экрана системы.
1 2 3 4 5 6 7 8 9 10 11 | #Сохранить текущую дату и время timestamp = time.strftime('%d-%b-%Y_%H-%M-%S', time.localtime()) #Создание текстового журнала при выключении системы f = open('/home/user/awake_log.txt','a+') f.write('Shutting down at {}'.format(timestamp)) f.close() #Сделать снимок экрана image_location = '/home/user/' + timestamp + '.jpeg' pyautogui.screenshot(image_location) |
Наконец, мы выдаем команду shutdown или reboot, в зависимости от действия, указанного во время вызова функции. Если пользователь ввел 's' или 'S', мы выключимся. Если пользователь ввел 'r' или 'R', мы перезагрузимся.
1 2 3 4 5 | #Выключение системы или перезапуск if action in ['s', 'S']: os.system("shutdown -s -f -t 0") if action in ['r', 'R']: os.system("Shutdown -r -f -t 0") |
Далее мы вызываем вышеуказанную функцию timer() из функции main.
1 2 3 4 5 6 7 8 9 | if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("-t", "--time", help="Enter time in minutes") parser.add_argument("-a", "--action", help="want to shutdown?") args = parser.parse_args() if args.time: timer(int(args.time), args.action) |
В нашей главной функции мы определяем парсер для разбора аргументов. Мы также вызываем функцию timer(), только если пользователь указал аргумент time.
Сохраните и закройте файл. Сделайте его исполняемым.
1 | sudo chmod +x stay_awake.py |
Вот полный код для справки.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | #!/usr/bin/python import argparse import pyautogui import time import os def timer(stop_time, action): counter = 0 while stop_time > counter: counter = counter + 1 time.sleep(60) pyautogui.click(button='right') #Сохранить текущую дату и время timestamp = time.strftime('%d-%b-%Y_%H-%M-%S', time.localtime()) #Create a text log when system shuts down f = open('/home/user/awake_log.txt','a+') f.write('Shutting down at {}'.format(timestamp)) f.close() #Сделать снимок экрана image_location = '/home/user/' + timestamp + '.jpeg' pyautogui.screenshot(image_location) #Выключение системы или перезапуск if action in ['s', 'S']: os.system("shutdown -s -f -t 0") if action in ['r', 'R']: os.system("Shutdown -r -f -t 0") if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("-t", "--time", help="Enter time in minutes") parser.add_argument("-a", "--action", help="want to shutdown?") args = parser.parse_args() if args.time: timer(int(args.time), args.action) |
Вы можете вызвать вышеуказанный скрипт, как показано ниже.
поддерживать систему в активном состоянии в течение 30 минут
1 | python stay_awake.py -t 30 |
поддерживать систему активной в течение 1 часа, а затем выключить ее
1 | python stay_awake.py -t 60 -a s |
поддерживать систему активной в течение 2 часов, а затем перезагрузить ее
1 | python stay_awake.py -t 120 -a r |
Заключение
В этой статье мы узнали, как создать скрипт для поддержания компьютера в бодрствующем состоянии. Вы можете настроить его в соответствии с вашими требованиями.