Невозможно запустить сценарий на основе systemd после пробуждения от приостановки. Зачем?

Следующий ответ показывает, как запустить сценарий после пробуждения из suspend на основе systemd. Я попробовал их, но не смог заставить gnome-terminal появиться для запуска команды.

#!/bin/sh if [ "$1" == "post" ]; then gnome-terminal --command 'compiz --replace &'

Почему они не работают? Я использую ядро ​​Ubuntu 16.04.2 4.8.0-45-generic. Мне любопытно, почему мой сценарий на основе systemd не работал. Моя команда работает на открытом гном-терминале, но каким-то образом не будет работать с методом systemd-suspend.service. ???

0
задан 13 April 2017 в 15:23

10 ответов

Как вы знаете, какие-либо терминальные эмуляторы были закрыты после выполнения своих заданий.

Но если вы хотите, чтобы gnome-terminal не закрывался с помощью этого скрипта на пути /etc/pm/sleep.d (этот сценарий вызывает сохранение терминал открыт до тех пор, пока вы не нажмете enter):

sudo nano /etc/pm/sleep.d/myscript

Затем вставьте этот текст в ваш скрипт:

#!/bin/bash
case $1 in 
     thaw|resume) gnome-terminal --command 'bash -c "compiz --replace &; read line"'
     ;;
esac

Затем выполните команду:

sudo chmod a+x /etc/pm/sleep.d/myscript

Надеюсь, это будет работать для вас.

UPDATE:

Спасибо за обмен. Мне было любопытно, почему мой сценарий на основе systemd не работал. Моя команда работает на открытом гном-терминале, но каким-то образом не будет работать с решением systemd-suspend.service. Не могли бы вы попробовать в своей системе увидеть, что это имеет какой-то эффект? Вы можете заменить команду compriz командой «sleep 20», чтобы попробовать. Оцените свою обратную связь. На многих машинах разные способы приостановки. Некоторые из них используют sudo pm-suspend, а некоторые из них используют команду systemctl suspend.

Мы можем использовать сценарий на основе systemd, если мы используем systemctl suspend для сна ОС (не использовать sudo pm-suspend. но в некоторых системах, когда вы нажимаете на suspend boton, в операционной системе используется команда pm-suspend ). Но сценарии на основе systemd и скрипты на основе управления на основе Powermanagement имеют небольшую разницу между собой:

В сценарии на основе systemd мы не можем запускать приложения GUI, потому что в этом состоянии для него нет X-сервера.

Поэтому вы не можете использовать gnome-terminal в таких командах, как gnome-terminal --command 'compiz --replace &'. Если вы хотите показать gnome-terminal, вы должны использовать скрипты на основе powermanagement.

Но в вашем случае достаточно использовать этот скрипт (без gnome-terminal):

#!/bin/sh
if [ $1 = post ] ; then
compiz --replace &
fi

И вы можете протестировать свой скрипт, заменив что-то вроде touch /home/YOURUSERNAME/Desktop/test.txt вместо compiz --replace &:

#!/bin/sh
if [ $1 = post ] ; then
touch /home/YOURUSERNAME/Desktop/test.txt
fi

(Имейте в виду, что, поскольку в сценариях, основанных на systemd, команды пользователя root, поэтому не используют ~/Desktop вместо из /home/YOURUSERNAME/Desktop, потому что пользователь root не является вашим домашним каталогом!)

0
ответ дан 23 May 2018 в 00:00
  • 1
    Спасибо, что поделился. Мне было любопытно, почему мой сценарий на основе systemd не работал. Моя команда работает на открытом гном-терминале, но каким-то образом не будет работать с решением systemd-suspend.service. Не могли бы вы попробовать в своей системе увидеть, что это имеет какой-то эффект? Вы можете заменить команду compriz командой "sleep 20" пытаться. Цените свои отзывы. – Sun Bear 4 April 2017 в 10:13
  • 2
    Я отредактировал свой комментарий и ответил на ваш вопрос – Ali Razmdideh 4 April 2017 в 22:23
  • 3
    Спасибо @ali. Я обнаружил, что compiz --replace& решает мои проблемы с отображением только при выполнении с терминала. Следовательно, я использовал gnome-terminal для выдачи команды. Возможно, вы захотите перепроверить. Отмечено на разницу между systemd и powermanagement. ;) – Sun Bear 8 April 2017 в 09:11
  • 4
    @Sun Bear. вы можете вместо этого использовать файлы ~ / .xsessionrc и ~ / .xsession; но насколько я знаю, U не может запускать запущенные GUI-приложения с базовым скриптом systemd – Ali Razmdideh 8 April 2017 в 09:58

Как вы знаете, какие-либо терминальные эмуляторы были закрыты после выполнения своих заданий.

Но если вы хотите, чтобы gnome-terminal не закрывался с помощью этого скрипта на пути /etc/pm/sleep.d (этот сценарий вызывает сохранение терминал открыт до тех пор, пока вы не нажмете enter):

sudo nano /etc/pm/sleep.d/myscript

Затем вставьте этот текст в ваш скрипт:

#!/bin/bash case $1 in thaw|resume) gnome-terminal --command 'bash -c "compiz --replace &; read line"' ;; esac

Затем выполните команду:

sudo chmod a+x /etc/pm/sleep.d/myscript

Надеюсь, это будет работать для вас.

UPDATE:

Спасибо за обмен. Мне было любопытно, почему мой сценарий на основе systemd не работал. Моя команда работает на открытом гном-терминале, но каким-то образом не будет работать с решением systemd-suspend.service. Не могли бы вы попробовать в своей системе увидеть, что это имеет какой-то эффект? Вы можете заменить команду compriz командой «sleep 20», чтобы попробовать. Оцените свою обратную связь. На многих машинах разные способы приостановки. Некоторые из них используют sudo pm-suspend, а некоторые из них используют команду systemctl suspend.

Мы можем использовать сценарий на основе systemd, если мы используем systemctl suspend для сна ОС (не использовать sudo pm-suspend. но в некоторых системах, когда вы нажимаете на suspend boton, в операционной системе используется команда pm-suspend ). Но сценарии на основе systemd и скрипты на основе управления на основе Powermanagement имеют небольшую разницу между собой:

В сценарии на основе systemd мы не можем запускать приложения GUI, потому что в этом состоянии для него нет X-сервера.

Поэтому вы не можете использовать gnome-terminal в таких командах, как gnome-terminal --command 'compiz --replace &'. Если вы хотите показать gnome-terminal, вы должны использовать скрипты на основе powermanagement.

Но в вашем случае достаточно использовать этот скрипт (без gnome-terminal):

#!/bin/sh if [ $1 = post ] ; then compiz --replace & fi

И вы можете протестировать свой скрипт, заменив что-то вроде touch /home/YOURUSERNAME/Desktop/test.txt вместо compiz --replace &:

#!/bin/sh if [ $1 = post ] ; then touch /home/YOURUSERNAME/Desktop/test.txt fi

(Имейте в виду, что, поскольку в сценариях, основанных на systemd, команды пользователя root, поэтому не используют ~/Desktop вместо из /home/YOURUSERNAME/Desktop, потому что пользователь root не является вашим домашним каталогом!)

0
ответ дан 18 July 2018 в 15:35

Как вы знаете, какие-либо терминальные эмуляторы были закрыты после выполнения своих заданий.

Но если вы хотите, чтобы gnome-terminal не закрывался с помощью этого скрипта на пути /etc/pm/sleep.d (этот сценарий вызывает сохранение терминал открыт до тех пор, пока вы не нажмете enter):

sudo nano /etc/pm/sleep.d/myscript

Затем вставьте этот текст в ваш скрипт:

#!/bin/bash case $1 in thaw|resume) gnome-terminal --command 'bash -c "compiz --replace &; read line"' ;; esac

Затем выполните команду:

sudo chmod a+x /etc/pm/sleep.d/myscript

Надеюсь, это будет работать для вас.

UPDATE:

Спасибо за обмен. Мне было любопытно, почему мой сценарий на основе systemd не работал. Моя команда работает на открытом гном-терминале, но каким-то образом не будет работать с решением systemd-suspend.service. Не могли бы вы попробовать в своей системе увидеть, что это имеет какой-то эффект? Вы можете заменить команду compriz командой «sleep 20», чтобы попробовать. Оцените свою обратную связь. На многих машинах разные способы приостановки. Некоторые из них используют sudo pm-suspend, а некоторые из них используют команду systemctl suspend.

Мы можем использовать сценарий на основе systemd, если мы используем systemctl suspend для сна ОС (не использовать sudo pm-suspend. но в некоторых системах, когда вы нажимаете на suspend boton, в операционной системе используется команда pm-suspend ). Но сценарии на основе systemd и скрипты на основе управления на основе Powermanagement имеют небольшую разницу между собой:

В сценарии на основе systemd мы не можем запускать приложения GUI, потому что в этом состоянии для него нет X-сервера.

Поэтому вы не можете использовать gnome-terminal в таких командах, как gnome-terminal --command 'compiz --replace &'. Если вы хотите показать gnome-terminal, вы должны использовать скрипты на основе powermanagement.

Но в вашем случае достаточно использовать этот скрипт (без gnome-terminal):

#!/bin/sh if [ $1 = post ] ; then compiz --replace & fi

И вы можете протестировать свой скрипт, заменив что-то вроде touch /home/YOURUSERNAME/Desktop/test.txt вместо compiz --replace &:

#!/bin/sh if [ $1 = post ] ; then touch /home/YOURUSERNAME/Desktop/test.txt fi

(Имейте в виду, что, поскольку в сценариях, основанных на systemd, команды пользователя root, поэтому не используют ~/Desktop вместо из /home/YOURUSERNAME/Desktop, потому что пользователь root не является вашим домашним каталогом!)

0
ответ дан 24 July 2018 в 20:40

Как вы знаете, какие-либо терминальные эмуляторы были закрыты после выполнения своих заданий.

Но если вы хотите, чтобы gnome-terminal не закрывался с помощью этого скрипта на пути /etc/pm/sleep.d (этот сценарий вызывает сохранение терминал открыт до тех пор, пока вы не нажмете enter):

sudo nano /etc/pm/sleep.d/myscript

Затем вставьте этот текст в ваш скрипт:

#!/bin/bash case $1 in thaw|resume) gnome-terminal --command 'bash -c "compiz --replace &; read line"' ;; esac

Затем выполните команду:

sudo chmod a+x /etc/pm/sleep.d/myscript

Надеюсь, это будет работать для вас.

UPDATE:

Спасибо за обмен. Мне было любопытно, почему мой сценарий на основе systemd не работал. Моя команда работает на открытом гном-терминале, но каким-то образом не будет работать с решением systemd-suspend.service. Не могли бы вы попробовать в своей системе увидеть, что это имеет какой-то эффект? Вы можете заменить команду compriz командой «sleep 20», чтобы попробовать. Оцените свою обратную связь. На многих машинах разные способы приостановки. Некоторые из них используют sudo pm-suspend, а некоторые из них используют команду systemctl suspend.

Мы можем использовать сценарий на основе systemd, если мы используем systemctl suspend для сна ОС (не использовать sudo pm-suspend. но в некоторых системах, когда вы нажимаете на suspend boton, в операционной системе используется команда pm-suspend ). Но сценарии на основе systemd и скрипты на основе управления на основе Powermanagement имеют небольшую разницу между собой:

В сценарии на основе systemd мы не можем запускать приложения GUI, потому что в этом состоянии для него нет X-сервера.

Поэтому вы не можете использовать gnome-terminal в таких командах, как gnome-terminal --command 'compiz --replace &'. Если вы хотите показать gnome-terminal, вы должны использовать скрипты на основе powermanagement.

Но в вашем случае достаточно использовать этот скрипт (без gnome-terminal):

#!/bin/sh if [ $1 = post ] ; then compiz --replace & fi

И вы можете протестировать свой скрипт, заменив что-то вроде touch /home/YOURUSERNAME/Desktop/test.txt вместо compiz --replace &:

#!/bin/sh if [ $1 = post ] ; then touch /home/YOURUSERNAME/Desktop/test.txt fi

(Имейте в виду, что, поскольку в сценариях, основанных на systemd, команды пользователя root, поэтому не используют ~/Desktop вместо из /home/YOURUSERNAME/Desktop, потому что пользователь root не является вашим домашним каталогом!)

0
ответ дан 31 July 2018 в 23:41

Как вы знаете, какие-либо терминальные эмуляторы были закрыты после выполнения своих заданий.

Но если вы хотите, чтобы gnome-terminal не закрывался с использованием этого скрипта на пути /etc/pm/sleep.d (этот сценарий вызывает сохранение терминал открыт до тех пор, пока вы не нажмете enter):

sudo nano /etc/pm/sleep.d/myscript

Затем вставьте это содержимое в ваш скрипт:

#!/bin/bash
case $1 in 
     thaw|resume) gnome-terminal --command 'bash -c "compiz --replace &; read line"'
     ;;
esac

Затем выполните команду:

sudo chmod a+x /etc/pm/sleep.d/myscript

Надеюсь, это сработает для вас.

UPDATE:

Спасибо за обмен. Мне было любопытно, почему мой сценарий на основе systemd не работал. Моя команда работает на открытом гном-терминале, но каким-то образом не будет работать с решением systemd-suspend.service. Не могли бы вы попробовать в своей системе увидеть, что это имеет какой-то эффект? Вы можете заменить команду compriz командой «sleep 20», чтобы попробовать. Оцените свою обратную связь. На многих машинах разные способы использования некоторых из них используют sudo pm-suspend, а некоторые из них используют команду systemctl suspend.

Мы можем использовать сценарий на основе systemd, если мы используем systemctl suspend для сна ОС (не использовать sudo pm-suspend, но в некоторых системах, когда вы нажимаете кнопку suspend boton, операционная система использует команду pm-suspend). Но скрипты на основе systemd и скрипты на основе управления с использованием Powermanagement имеют небольшую разницу между собой:

В сценарии на основе systemd мы не можем запускать приложения GUI, потому что в этом состоянии для него не существует X-сервера.

Поэтому вы не можете использовать gnome-terminal в таких командах, как gnome-terminal --command 'compiz --replace &'. Если вы хотите показать gnome-terminal, вы должны использовать скрипты на основе powermanagement.

Но в вашем случае достаточно использовать этот скрипт (без gnome-terminal):

#!/bin/sh
if [ $1 = post ] ; then
compiz --replace &
fi

И вы можете протестировать свой скрипт, заменив что-то вроде touch /home/YOURUSERNAME/Desktop/test.txt вместо compiz --replace &:

#!/bin/sh
if [ $1 = post ] ; then
touch /home/YOURUSERNAME/Desktop/test.txt
fi

(имейте в виду, что, поскольку в сценариях, основанных на systemd, команды пользователя root, поэтому не используют ~/Desktop вместо из /home/YOURUSERNAME/Desktop, потому что пользователь root не является вашим домашним каталогом!) [/ ​​g12]

0
ответ дан 2 August 2018 в 18:38

Как вы знаете, какие-либо терминальные эмуляторы были закрыты после выполнения своих заданий.

Но если вы хотите, чтобы gnome-terminal не закрывался с использованием этого скрипта на пути /etc/pm/sleep.d (этот сценарий вызывает сохранение терминал открыт до тех пор, пока вы не нажмете enter):

sudo nano /etc/pm/sleep.d/myscript

Затем вставьте это содержимое в ваш скрипт:

#!/bin/bash
case $1 in 
     thaw|resume) gnome-terminal --command 'bash -c "compiz --replace &; read line"'
     ;;
esac

Затем выполните команду:

sudo chmod a+x /etc/pm/sleep.d/myscript

Надеюсь, это сработает для вас.

UPDATE:

Спасибо за обмен. Мне было любопытно, почему мой сценарий на основе systemd не работал. Моя команда работает на открытом гном-терминале, но каким-то образом не будет работать с решением systemd-suspend.service. Не могли бы вы попробовать в своей системе увидеть, что это имеет какой-то эффект? Вы можете заменить команду compriz командой «sleep 20», чтобы попробовать. Оцените свою обратную связь. На многих машинах разные способы использования некоторых из них используют sudo pm-suspend, а некоторые из них используют команду systemctl suspend.

Мы можем использовать сценарий на основе systemd, если мы используем systemctl suspend для сна ОС (не использовать sudo pm-suspend, но в некоторых системах, когда вы нажимаете кнопку suspend boton, операционная система использует команду pm-suspend). Но скрипты на основе systemd и скрипты на основе управления с использованием Powermanagement имеют небольшую разницу между собой:

В сценарии на основе systemd мы не можем запускать приложения GUI, потому что в этом состоянии для него не существует X-сервера.

Поэтому вы не можете использовать gnome-terminal в таких командах, как gnome-terminal --command 'compiz --replace &'. Если вы хотите показать gnome-terminal, вы должны использовать скрипты на основе powermanagement.

Но в вашем случае достаточно использовать этот скрипт (без gnome-terminal):

#!/bin/sh
if [ $1 = post ] ; then
compiz --replace &
fi

И вы можете протестировать свой скрипт, заменив что-то вроде touch /home/YOURUSERNAME/Desktop/test.txt вместо compiz --replace &:

#!/bin/sh
if [ $1 = post ] ; then
touch /home/YOURUSERNAME/Desktop/test.txt
fi

(имейте в виду, что, поскольку в сценариях, основанных на systemd, команды пользователя root, поэтому не используют ~/Desktop вместо из /home/YOURUSERNAME/Desktop, потому что пользователь root не является вашим домашним каталогом!) [/ ​​g12]

0
ответ дан 3 August 2018 в 20:57

Как вы знаете, какие-либо терминальные эмуляторы были закрыты после выполнения своих заданий.

Но если вы хотите, чтобы gnome-terminal не закрывался с использованием этого скрипта на пути /etc/pm/sleep.d (этот сценарий вызывает сохранение терминал открыт до тех пор, пока вы не нажмете enter):

sudo nano /etc/pm/sleep.d/myscript

Затем вставьте это содержимое в ваш скрипт:

#!/bin/bash
case $1 in 
     thaw|resume) gnome-terminal --command 'bash -c "compiz --replace &; read line"'
     ;;
esac

Затем выполните команду:

sudo chmod a+x /etc/pm/sleep.d/myscript

Надеюсь, это сработает для вас.

UPDATE:

Спасибо за обмен. Мне было любопытно, почему мой сценарий на основе systemd не работал. Моя команда работает на открытом гном-терминале, но каким-то образом не будет работать с решением systemd-suspend.service. Не могли бы вы попробовать в своей системе увидеть, что это имеет какой-то эффект? Вы можете заменить команду compriz командой «sleep 20», чтобы попробовать. Оцените свою обратную связь. На многих машинах разные способы использования некоторых из них используют sudo pm-suspend, а некоторые из них используют команду systemctl suspend.

Мы можем использовать сценарий на основе systemd, если мы используем systemctl suspend для сна ОС (не использовать sudo pm-suspend, но в некоторых системах, когда вы нажимаете кнопку suspend boton, операционная система использует команду pm-suspend). Но скрипты на основе systemd и скрипты на основе управления с использованием Powermanagement имеют небольшую разницу между собой:

В сценарии на основе systemd мы не можем запускать приложения GUI, потому что в этом состоянии для него не существует X-сервера.

Поэтому вы не можете использовать gnome-terminal в таких командах, как gnome-terminal --command 'compiz --replace &'. Если вы хотите показать gnome-terminal, вы должны использовать скрипты на основе powermanagement.

Но в вашем случае достаточно использовать этот скрипт (без gnome-terminal):

#!/bin/sh
if [ $1 = post ] ; then
compiz --replace &
fi

И вы можете протестировать свой скрипт, заменив что-то вроде touch /home/YOURUSERNAME/Desktop/test.txt вместо compiz --replace &:

#!/bin/sh
if [ $1 = post ] ; then
touch /home/YOURUSERNAME/Desktop/test.txt
fi

(имейте в виду, что, поскольку в сценариях, основанных на systemd, команды пользователя root, поэтому не используют ~/Desktop вместо из /home/YOURUSERNAME/Desktop, потому что пользователь root не является вашим домашним каталогом!) [/ ​​g12]

0
ответ дан 5 August 2018 в 05:35

Как вы знаете, какие-либо терминальные эмуляторы были закрыты после выполнения своих заданий.

Но если вы хотите, чтобы gnome-terminal не закрывался с использованием этого скрипта на пути /etc/pm/sleep.d (этот сценарий вызывает сохранение терминал открыт до тех пор, пока вы не нажмете enter):

sudo nano /etc/pm/sleep.d/myscript

Затем вставьте это содержимое в ваш скрипт:

#!/bin/bash
case $1 in 
     thaw|resume) gnome-terminal --command 'bash -c "compiz --replace &; read line"'
     ;;
esac

Затем выполните команду:

sudo chmod a+x /etc/pm/sleep.d/myscript

Надеюсь, это сработает для вас.

UPDATE:

Спасибо за обмен. Мне было любопытно, почему мой сценарий на основе systemd не работал. Моя команда работает на открытом гном-терминале, но каким-то образом не будет работать с решением systemd-suspend.service. Не могли бы вы попробовать в своей системе увидеть, что это имеет какой-то эффект? Вы можете заменить команду compriz командой «sleep 20», чтобы попробовать. Оцените свою обратную связь. На многих машинах разные способы использования некоторых из них используют sudo pm-suspend, а некоторые из них используют команду systemctl suspend.

Мы можем использовать сценарий на основе systemd, если мы используем systemctl suspend для сна ОС (не использовать sudo pm-suspend, но в некоторых системах, когда вы нажимаете кнопку suspend boton, операционная система использует команду pm-suspend). Но скрипты на основе systemd и скрипты на основе управления с использованием Powermanagement имеют небольшую разницу между собой:

В сценарии на основе systemd мы не можем запускать приложения GUI, потому что в этом состоянии для него не существует X-сервера.

Поэтому вы не можете использовать gnome-terminal в таких командах, как gnome-terminal --command 'compiz --replace &'. Если вы хотите показать gnome-terminal, вы должны использовать скрипты на основе powermanagement.

Но в вашем случае достаточно использовать этот скрипт (без gnome-terminal):

#!/bin/sh
if [ $1 = post ] ; then
compiz --replace &
fi

И вы можете протестировать свой скрипт, заменив что-то вроде touch /home/YOURUSERNAME/Desktop/test.txt вместо compiz --replace &:

#!/bin/sh
if [ $1 = post ] ; then
touch /home/YOURUSERNAME/Desktop/test.txt
fi

(имейте в виду, что, поскольку в сценариях, основанных на systemd, команды пользователя root, поэтому не используют ~/Desktop вместо из /home/YOURUSERNAME/Desktop, потому что пользователь root не является вашим домашним каталогом!) [/ ​​g12]

0
ответ дан 6 August 2018 в 22:43

Как вы знаете, какие-либо терминальные эмуляторы были закрыты после выполнения своих заданий.

Но если вы хотите, чтобы gnome-terminal не закрывался с использованием этого скрипта на пути /etc/pm/sleep.d (этот сценарий вызывает сохранение терминал открыт до тех пор, пока вы не нажмете enter):

sudo nano /etc/pm/sleep.d/myscript

Затем вставьте это содержимое в ваш скрипт:

#!/bin/bash
case $1 in 
     thaw|resume) gnome-terminal --command 'bash -c "compiz --replace &; read line"'
     ;;
esac

Затем выполните команду:

sudo chmod a+x /etc/pm/sleep.d/myscript

Надеюсь, это сработает для вас.

UPDATE:

Спасибо за обмен. Мне было любопытно, почему мой сценарий на основе systemd не работал. Моя команда работает на открытом гном-терминале, но каким-то образом не будет работать с решением systemd-suspend.service. Не могли бы вы попробовать в своей системе увидеть, что это имеет какой-то эффект? Вы можете заменить команду compriz командой «sleep 20», чтобы попробовать. Оцените свою обратную связь. На многих машинах разные способы использования некоторых из них используют sudo pm-suspend, а некоторые из них используют команду systemctl suspend.

Мы можем использовать сценарий на основе systemd, если мы используем systemctl suspend для сна ОС (не использовать sudo pm-suspend, но в некоторых системах, когда вы нажимаете кнопку suspend boton, операционная система использует команду pm-suspend). Но скрипты на основе systemd и скрипты на основе управления с использованием Powermanagement имеют небольшую разницу между собой:

В сценарии на основе systemd мы не можем запускать приложения GUI, потому что в этом состоянии для него не существует X-сервера.

Поэтому вы не можете использовать gnome-terminal в таких командах, как gnome-terminal --command 'compiz --replace &'. Если вы хотите показать gnome-terminal, вы должны использовать скрипты на основе powermanagement.

Но в вашем случае достаточно использовать этот скрипт (без gnome-terminal):

#!/bin/sh
if [ $1 = post ] ; then
compiz --replace &
fi

И вы можете протестировать свой скрипт, заменив что-то вроде touch /home/YOURUSERNAME/Desktop/test.txt вместо compiz --replace &:

#!/bin/sh
if [ $1 = post ] ; then
touch /home/YOURUSERNAME/Desktop/test.txt
fi

(имейте в виду, что, поскольку в сценариях, основанных на systemd, команды пользователя root, поэтому не используют ~/Desktop вместо из /home/YOURUSERNAME/Desktop, потому что пользователь root не является вашим домашним каталогом!) [/ ​​g12]

0
ответ дан 9 August 2018 в 03:09

Как вы знаете, какие-либо терминальные эмуляторы были закрыты после выполнения своих заданий.

Но если вы хотите, чтобы gnome-terminal не закрывался с использованием этого скрипта на пути /etc/pm/sleep.d (этот сценарий вызывает сохранение терминал открыт до тех пор, пока вы не нажмете enter):

sudo nano /etc/pm/sleep.d/myscript

Затем вставьте это содержимое в ваш скрипт:

#!/bin/bash
case $1 in 
     thaw|resume) gnome-terminal --command 'bash -c "compiz --replace &; read line"'
     ;;
esac

Затем выполните команду:

sudo chmod a+x /etc/pm/sleep.d/myscript

Надеюсь, это сработает для вас.

UPDATE:

Спасибо за обмен. Мне было любопытно, почему мой сценарий на основе systemd не работал. Моя команда работает на открытом гном-терминале, но каким-то образом не будет работать с решением systemd-suspend.service. Не могли бы вы попробовать в своей системе увидеть, что это имеет какой-то эффект? Вы можете заменить команду compriz командой «sleep 20», чтобы попробовать. Оцените свою обратную связь. На многих машинах разные способы использования некоторых из них используют sudo pm-suspend, а некоторые из них используют команду systemctl suspend.

Мы можем использовать сценарий на основе systemd, если мы используем systemctl suspend для сна ОС (не использовать sudo pm-suspend, но в некоторых системах, когда вы нажимаете кнопку suspend boton, операционная система использует команду pm-suspend). Но скрипты на основе systemd и скрипты на основе управления с использованием Powermanagement имеют небольшую разницу между собой:

В сценарии на основе systemd мы не можем запускать приложения GUI, потому что в этом состоянии для него не существует X-сервера.

Поэтому вы не можете использовать gnome-terminal в таких командах, как gnome-terminal --command 'compiz --replace &'. Если вы хотите показать gnome-terminal, вы должны использовать скрипты на основе powermanagement.

Но в вашем случае достаточно использовать этот скрипт (без gnome-terminal):

#!/bin/sh
if [ $1 = post ] ; then
compiz --replace &
fi

И вы можете протестировать свой скрипт, заменив что-то вроде touch /home/YOURUSERNAME/Desktop/test.txt вместо compiz --replace &:

#!/bin/sh
if [ $1 = post ] ; then
touch /home/YOURUSERNAME/Desktop/test.txt
fi

(имейте в виду, что, поскольку в сценариях, основанных на systemd, команды пользователя root, поэтому не используют ~/Desktop вместо из /home/YOURUSERNAME/Desktop, потому что пользователь root не является вашим домашним каталогом!) [/ ​​g12]

0
ответ дан 14 August 2018 в 21:28
  • 1
    Спасибо, что поделился. Мне было любопытно, почему мой сценарий на основе systemd не работал. Моя команда работает на открытом гном-терминале, но каким-то образом не будет работать с решением systemd-suspend.service. Не могли бы вы попробовать в своей системе увидеть, что это имеет какой-то эффект? Вы можете заменить команду compriz командой "sleep 20" пытаться. Цените свои отзывы. – Sun Bear 4 April 2017 в 10:13
  • 2
    Я отредактировал свой комментарий и ответил на ваш вопрос – Ali Razmdideh 4 April 2017 в 22:23
  • 3
    Спасибо @ali. Я обнаружил, что compiz --replace& решает мои проблемы с отображением только при выполнении с терминала. Следовательно, я использовал gnome-terminal для выдачи команды. Возможно, вы захотите перепроверить. Отмечено на разницу между systemd и powermanagement. ;) – Sun Bear 8 April 2017 в 09:11
  • 4
    @Sun Bear. вы можете вместо этого использовать файлы ~ / .xsessionrc и ~ / .xsession; но насколько я знаю, U не может запускать запущенные GUI-приложения с базовым скриптом systemd – Ali Razmdideh 8 April 2017 в 09:58

Другие вопросы по тегам:

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