Вы должны сделать это, используя следующую команду:
gsettings set org.gnome.desktop.session idle-delay 2700
В качестве альтернативы вы можете установить dconf-editor и использовать его для перехода к этому значению и установки его, если вы предпочитаете подход к графическому интерфейсу .
После установки этого параметра в диалоговом окне настроек gnome будет отображаться значение «никогда» для этого ключа. Я не пробовал ждать 45 минут, чтобы убедиться, что это действительно то, чего можно было бы ожидать.
Как я узнал? Я сбросил мои текущие настройки, используя следующую команду:
for s in $(gsettings list-schemas); do for k in $(gsettings list-keys $s); do echo -n "$s/$k: "; gsettings get $s $k; done; done >gsettings.1
Затем изменил настройку, используя диалог настроек gnome. Затем снова запустите команду, но замените gsettings.1 на gsettings.2, чтобы снова сбросить настройки в другой файл.
Впоследствии я мог использовать diff, чтобы увидеть, какой ключ был изменен:
diff gsettings.1 gsettings.2
1883c1883
< org.gnome.desktop.session/idle-delay: uint32 900
---
> org.gnome.desktop.session/idle-delay: uint32 600
При запуске ./killProcess.sh somename существует процесс, подобный
/bin/bash ./killProcess.sh somename
, и строка ps | grep | grep | awk также находит это, потому что в нем есть текст somename. Я не совсем уверен, почему у вас есть два дополнительных PID (и не только один), но я считаю, что между bash и killProcess.sh существует несколько родительских / дочерних элементов. В одной строке PID отображается как PID, а другой - как PPID.
Вы можете избежать этих PID, отбросив их на основании имени скрипта. Он сохраняется в $0, поэтому
PID=$(ps -ef | grep $PROCESSNAME | grep -v grep | grep -v $0 | awk '{print $2}');
или (с меньшим количеством программных вызовов):
PID=$(ps -ef | grep $PROCESSNAME | grep -v -e grep -e $0 | awk '{print $2}');
Другой (более безопасный) способ состоял бы в том, чтобы удалить PID сценария , Он хранится в $$:
PID=$(ps -ef | grep $PROCESSNAME | grep -v -e grep -e $$ | awk '{print $2}');
Или все это в awk:
PID=$(ps -ef | awk "/$PROCESSNAME/ && !/awk/ && !/$$/ {print \$2}");
Нам нужно избежать \$2 здесь, чтобы он не был " t интерпретируется оболочкой, но awk. Эта команда означает:
Если строка содержит $PROCESSNAME и не содержит awk и не содержит нашего собственного PID, тогда напечатайте второй столбец.
Преимущество (теоретически), что это работает быстрее, потому что требуется только одна дополнительная команда (awk), а не 3 greps и awk.
Все эти greps и awks не идеальны, и вы всегда найдете ситуацию, которую мы здесь не видим (например, частичные совпадения и т. д.). Поэтому я рекомендую использовать один из уже написанных инструментов:
killall somename # для предварительного просмотра, первый запуск killall -v -s 0 somename pgrep somename # просто введите PID pkill somename #, аналогичный killallПри запуске ./killProcess.sh somename существует процесс, подобный
/bin/bash ./killProcess.sh somename
, и строка ps | grep | grep | awk также находит это, потому что в нем есть текст somename. Я не совсем уверен, почему у вас есть два дополнительных PID (и не только один), но я считаю, что между bash и killProcess.sh существует несколько родительских / дочерних элементов. В одной строке PID отображается как PID, а другой - как PPID.
Вы можете избежать этих PID, отбросив их на основании имени скрипта. Он сохраняется в $0, поэтому
PID=$(ps -ef | grep $PROCESSNAME | grep -v grep | grep -v $0 | awk '{print $2}');
или (с меньшим количеством программных вызовов):
PID=$(ps -ef | grep $PROCESSNAME | grep -v -e grep -e $0 | awk '{print $2}');
Другой (более безопасный) способ состоял бы в том, чтобы удалить PID сценария , Он хранится в $$:
PID=$(ps -ef | grep $PROCESSNAME | grep -v -e grep -e $$ | awk '{print $2}');
Или все это в awk:
PID=$(ps -ef | awk "/$PROCESSNAME/ && !/awk/ && !/$$/ {print \$2}");
Нам нужно избежать \$2 здесь, чтобы он не был " t интерпретируется оболочкой, но awk. Эта команда означает:
Если строка содержит $PROCESSNAME и не содержит awk и не содержит нашего собственного PID, тогда напечатайте второй столбец.
Преимущество (теоретически), что это работает быстрее, потому что требуется только одна дополнительная команда (awk), а не 3 greps и awk.
Все эти greps и awks не идеальны, и вы всегда найдете ситуацию, которую мы здесь не видим (например, частичные совпадения и т. д.). Поэтому я рекомендую использовать один из уже написанных инструментов:
killall somename # для предварительного просмотра, первый запуск killall -v -s 0 somename pgrep somename # просто введите PID pkill somename #, аналогичный killallПри запуске ./killProcess.sh somename существует процесс, подобный
/bin/bash ./killProcess.sh somename
, и строка ps | grep | grep | awk также находит это, потому что в нем есть текст somename. Я не совсем уверен, почему у вас есть два дополнительных PID (и не только один), но я считаю, что между bash и killProcess.sh существует несколько родительских / дочерних элементов. В одной строке PID отображается как PID, а другой - как PPID.
Вы можете избежать этих PID, отбросив их на основании имени скрипта. Он сохраняется в $0, поэтому
PID=$(ps -ef | grep $PROCESSNAME | grep -v grep | grep -v $0 | awk '{print $2}');
или (с меньшим количеством программных вызовов):
PID=$(ps -ef | grep $PROCESSNAME | grep -v -e grep -e $0 | awk '{print $2}');
Другой (более безопасный) способ состоял бы в том, чтобы удалить PID сценария , Он хранится в $$:
PID=$(ps -ef | grep $PROCESSNAME | grep -v -e grep -e $$ | awk '{print $2}');
Или все это в awk:
PID=$(ps -ef | awk "/$PROCESSNAME/ && !/awk/ && !/$$/ {print \$2}");
Нам нужно избежать \$2 здесь, чтобы он не был " t интерпретируется оболочкой, но awk. Эта команда означает:
Если строка содержит $PROCESSNAME и не содержит awk и не содержит нашего собственного PID, тогда напечатайте второй столбец.
Преимущество (теоретически), что это работает быстрее, потому что требуется только одна дополнительная команда (awk), а не 3 greps и awk.
Все эти greps и awks не идеальны, и вы всегда найдете ситуацию, которую мы здесь не видим (например, частичные совпадения и т. д.). Поэтому я рекомендую использовать один из уже написанных инструментов:
killall somename # для предварительного просмотра, первый запуск killall -v -s 0 somename pgrep somename # просто введите PID pkill somename #, аналогичный killallЯ когда-то реализовал аналогичную идею, такую как функция оболочки, которую я называю psg (для «ps | grep»)
psg() {
local -a patterns=()
(( $# == 0 )) && set -- $USER
for arg do
patterns+=( "-e" "[${arg:0:1}]${arg:1}" )
done
ps -ef | grep "${patterns[@]}"
}
Это использует трюк для размещения первого символа шаблон в скобках, поэтому вы получаете
ps -ef | grep "[s]omename"
Это позволяет вам отбросить часть grep -v grep конвейера.
Если вы не передадите какие-либо аргументы, он использует ваши имя пользователя для поиска ваших процессов.
Я когда-то реализовал аналогичную идею, такую как функция оболочки, которую я называю psg (для «ps | grep»)
psg() {
local -a patterns=()
(( $# == 0 )) && set -- $USER
for arg do
patterns+=( "-e" "[${arg:0:1}]${arg:1}" )
done
ps -ef | grep "${patterns[@]}"
}
Это использует трюк для размещения первого символа шаблон в скобках, поэтому вы получаете
ps -ef | grep "[s]omename"
Это позволяет вам отбросить часть grep -v grep конвейера.
Если вы не передадите какие-либо аргументы, он использует ваши имя пользователя для поиска ваших процессов.
Я когда-то реализовал аналогичную идею, такую как функция оболочки, которую я называю psg (для «ps | grep»)
psg() {
local -a patterns=()
(( $# == 0 )) && set -- $USER
for arg do
patterns+=( "-e" "[${arg:0:1}]${arg:1}" )
done
ps -ef | grep "${patterns[@]}"
}
Это использует трюк для размещения первого символа шаблон в скобках, поэтому вы получаете
ps -ef | grep "[s]omename"
Это позволяет вам отбросить часть grep -v grep конвейера.
Если вы не передадите какие-либо аргументы, он использует ваши имя пользователя для поиска ваших процессов.