Как мне «заблокировать» свой Linux-бокс на несколько часов?

Если вы собираетесь использовать этот сценарий оболочки с проверкой if, просто используйте -q, как предложил heemayl:

if sudo dmidecode | grep -q Thinkpad
then
    echo "I'm a Thinkpad"
fi

Поскольку блок if проверяет статус выхода команды, мы можем полагаться на статус выхода grep напрямую вместо того, чтобы печатать $? и сравнивать его с чем-то другим.

0
10.11.2016, 12:54
4 ответа

Другой подход - отключить мышь и клавиатуру (предполагая систему с USB-устройствами ввода):

00 23 * * * rmmod usbhid
00  7 * * * modprobe usbhid

Это не помешает вам выключить и снова включить систему, что снова включит клавиатуру и мышь... Если вы хотите предотвратить это, вы можете включить модуль в черный список, но вам, вероятно, придется каждый раз перестраивать initramfs (usbhid должен быть загружен очень рано во время загрузки, поскольку вы хотите иметь рабочую клавиатуру, чтобы исправить ситуацию, когда система не может загрузиться).

Если usbhid встроен в ядро вашей системы (например, Fedora), вы можете добиться того же эффекта, отвязав все HID-устройства; сложнее всего будет перепривязать их в 7 утра - вам нужно будет где-то хранить драйверы, от которых они были отвязаны (если нет способа их перечислить). Чтобы отвязать все устройства:

for device in /sys/bus/hid/devices/*; do
    echo ${device##*/} > ${device}/driver/unbind
done

(с соответствующей проверкой ошибок, конечно). Для повторной привязки нужно вспомнить, на какой драйвер указывал ${device}/driver, и echo идентификатор устройства для bind в каталоге драйвера.

2
28.01.2020, 02:13

Я бы предложил атаку в двух направлениях:

  1. Установите скрипт (через кронтаб root'а), который выключит (приостановит) компьютер в 23:00. Настройте его на выполнение каждую минуту с 23:00 до 23:15, на случай, если что-то отменит первое выключение. Это выведет вас из системы перед сном.
  2. Установите в вашем ~/.bashrc, а также в root'е, команду остановки системы, если время между 23:00 и 07:00. Это предотвратит вход в систему в это время.

Однако, как я уже упоминал в комментариях, ничто, что вы можете установить, не будет надежным. У вас есть root-доступ к вашему собственному ящику.

Это классический пример поиска технического решения человеческой проблемы; если вы хотите спать с 23:00 до 07:00, вам придется позаботиться о своей самодисциплине в этом вопросе другими способами. Корень не может сделать это за вас, потому что вы есть корень. Он будет брать на себя личную ответственность.

У меня есть много вполне работоспособной информации по этому вопросу, но я удержусь от нее, так как это будет не по теме. :)

4
28.01.2020, 02:13

Вы можете создать службу, скажем self_discipline , создание службы зависит от системы , но есть много онлайн-справочники .

И пример сценария, который может запускать служба, будет примерно таким.

#!/bin/bash
while [ true ]
do
   HOUR="$(date +%H)"
   if [ "$HOUR" -gt 23 ] || [ "$HOUR" -lt 07 ]
   then
      shutdown -h now
   fi
   sleep 60                                                                                
done 

Затем просто установите эту службу для запуска при запуске, что не позволит вам отключить ее, просто перезагрузив ее. Если вы хотите отключить его раньше времени, вы можете просто service self_discipline stop

1
28.01.2020, 02:13

Настройте Linux на выход из системы в 23:00. Используйте LetterMeLater.com и настройте его на отправку вашего логина по электронной почте в 7 утра (не делайте его запоминающимся и убедитесь, что вы не являетесь адресом электронной почты по умолчанию; кто-то из ваших знакомых, который не разбирается в компьютерах, поэтому было бы сложно пройти через забытый логин ).

Введите его со своего телефона и удалите, когда у вас есть. Хорошо для паровых и игровых сохранений, если вы не можете хорошо контролировать игры.

Также убедитесь, что пароль планировщика электронной почты совпадает с вашим логином. Таким образом, вы можете изменить его, когда захотите. Но только тогда, когда он будет отправлен вам по электронной почте. Это необязательно. Может быть, вы не хотите его менять и знаете, что это будет стандартно. Тестируйте его, пока не убедитесь, что он работает для вас.

0
06.03.2020, 07:51

Теги

Похожие вопросы