У меня была аналогичная проблема. Я не уверен, что единственное обходное решение, которое я нашел, будет работать для вас, но стоит попробовать.
Я переключаюсь на tty1 (Ctrl + Alt + F1) и регистрируюсь, что, надеюсь, вы можете сделать , Если вы не можете даже переключиться, ваша проблема будет хуже моей! Но, предполагая, что вы так далеко дошли, я обнаружил, что перенос компьютера на спящий режим и возвращение его обратно по крайней мере заставляет компьютер реагировать снова. Это действительно не идеальное решение. Но для этого
cd /etc/acpi
sudo ./sleep.sh
После этого просто нажмите кнопку питания, чтобы вернуть его. Если вы вернетесь к графическому терминалу ( Ctrl + Alt + Alt ), все может снова реагировать.
Не идеально, но это лучше, чем полный перезапуск особенно если у вас есть важные вещи, которые еще не были сохранены.
Я еще не нашел, что вызывает это, иначе может возникнуть надежда на лучшее решение. Кто-то из потока, с которым я связался, предположил, что gnome-screen-saver вызывает проблемы, но убивает его после замораживания, ничего не исправить и убить его в начале сеанса не помешало мне заморозить. [!d11 ]
Вместо того, чтобы читать файл в переменной и вставлять это содержимое с помощью команды i (которая не будет работать для определенных случаев, таких как сбой, содержащий новые строки / им нужно будет получить экранирование), вы должны использовать команду r для добавьте текст напрямую:
for name in $(cat /home/stuff/list); do
sed -i "27r /home/stuff/test" $name
done
Чтобы избежать проблем с обратными окнами, было бы лучше использовать:
while read -r name; do
sed -i "27r /home/stuff/test" "$name"
done < /home/stuff/list
Или проще:
xargs -rd '\n' -- sed -i "27r /home/stuff/test" < /home/stuff/list
Вместо того, чтобы читать файл в переменной и вставлять это содержимое с помощью команды i (которая не будет работать для определенных случаев, таких как сбой, содержащий новые строки / им нужно будет получить экранирование), вы должны использовать команду r для добавьте текст напрямую:
for name in $(cat /home/stuff/list); do
sed -i "27r /home/stuff/test" $name
done
Чтобы избежать проблем с обратными окнами, было бы лучше использовать:
while read -r name; do
sed -i "27r /home/stuff/test" "$name"
done < /home/stuff/list
Или проще:
xargs -rd '\n' -- sed -i "27r /home/stuff/test" < /home/stuff/list