Я пытаюсь запустить скрипт, когда пользователь вышел из системы. Мой дистрибутив Linux - Pardus, использующий KDE. Как я могу это сделать?

Я слышал о "/.bash_logout", но не смог реализовать это. Где я должен создать файл "/.bash_logout"?

2 ответа2

0

Я предполагаю, что вы хотите это для каждого пользователя для следующих

Есть несколько разных вариантов, но сначала, чтобы устранить недоразумение, вы упоминаете «/.bash_logout», но везде, где я видел, предлагается ~/.bash_logout .

~ Это короткий способ сказать "дом этого пользователя". Так это будет означать, что вам нужно сделать .bash_logout файл в /home/USERNAME/.bash_logout

Другой вариант - воспользоваться предложением KDE: /home/USERNAME/.kde4/shutdown/ . Добавьте туда скрипты и убедитесь, что они исполняемые (chmod +x ~/.kde4/shutdown/scriptname.sh). Если папка не существует, просто создайте ее.

Если вы хотите, чтобы это произошло для всех пользователей

Используйте /usr/shutdown/ .

Примечание. У меня нет KDE для проверки специфики KDE.

0

Прежде всего, вы можете создать файл в вашем домашнем каталоге с именем .bash_logout .
Обратите внимание на точку перед ним. Это обозначает файлы конфигурации, и они обычно не отображаются при ls если вы не добавили опцию -a .

Сначала проверьте, поддерживает ли ваша система этот файл. (например, он может ничего не делать, если вы не запускаете bash. Вы можете использовать другую оболочку, такую как zsh, sh, pinosh, dc, ...

Тестировать это можно так же просто, как сделать vim ~/.bash_logout и добавить строку echo This works! до конца этого. Выйдите из вашей текстовой консоли и проверьте, не повторяет ли это «Это работает!на экран. Если вы используете графическое окружение, которое закрывает терминал при выходе из него, то размещение другой команды в файле .bash_logout может быть более удобным. (Например, команда touch bash_logout_last_tiggered . Это установит дату модификации файла bash_logout_last_tiggered на время, когда была запущена сенсорная команда).

Далее читайте на nohup. В основном, когда вы выходите из оболочки, каждая программа, которая все еще работает, получит сигнал, указывающий на ее остановку. Этот сигнал называется HUP (зависание). Название происходит от времени, когда люди использовали телефонные линии для подключения к серверам / Эти соединения иногда прерывались, когда на линии был шум. Затем у вас есть выбор: запускать программы или выполнять очистку. Сделан выбор - отправить всем программам сигнал 1, SigHUP. Затем программы аккуратно очистятся (например, текстовый редактор сохранит свой файл и завершит работу. Игра будет сохранять и выходить и т.д. И т.д.).

Вы можете либо написать программу и позволить ей перехватывать вздох, в этом случае вы можете сделать это. Или используйте упаковку nohup чтобы сделать это для вас.

Примеры:

cd /usr/src/linux ; make bzImage запустит компиляцию нового ядра. Это то, что может занять много времени (обычно часы в эпоху 80486).

В течение всего этого времени мой терминал занят, надеемся, что это показывает успешную компиляцию нового ядра. Я не могу больше ничего делать.

Теперь, если я добавлю амперсанд (&) к команде, она будет работать в фоновом режиме.
Однако он все равно получит sigHup, когда я выйду из системы.

Решение: **nohup** command_here **&** .
Обратите внимание на nohup перед командой и амперсанд в конце (что также означает, что он не будет получать ввод.


Все это предполагает, что вы используете bash и не хотите ничего запускать из диспетчера окон KDE. Что-то, что, я уверен, также возможно (но это не был заданный вопрос).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .