Pardus 上的 Linux 注销脚本

Pardus 上的 Linux 注销脚本

我正在尝试在用户注销时运行脚本。我的 Linux 发行版是使用 KDE 的 Pardus。我该怎么做?

我听说过“/.bash_logout”,但我无法实现它。我应该在哪里创建“/.bash_logout”文件?

答案1

我假设您希望按用户进行以下操作

有几个不同的选择,但首先为了消除误解,你提到“/.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 的具体情况。

答案2

首先,您可以在主目录中创建一个名为的文件.bash_logout
请注意前面的点。这表示配置文件,ls除非您添加-a选项,否则这些文件通常不会在您输入时列出。

首先检查你的系统是否支持此文件。(例如,如果你不运行 bash,它可能不会执行任何操作。你可能正在使用其他 shell,例如 zsh、sh、pinosh、dc、...

测试这一点非常简单,只需执行vim ~/.bash_logout并在其末尾添加一行即可echo This works!。从文本控制台注销并检查它是否在屏幕上回显“这有效!”。如果您使用的是图形环境,它会在您注销时关闭终端,那么在 .bash_logout 文件中放置另一个命令可能会更方便。(例如命令touch bash_logout_last_tiggered。这将设置文件的修改日期bash_logout_last_tiggered到触摸命令运行的时间)。

接下来阅读禁止。基本上,当您从 shell 注销时,每个仍在运行的程序都会收到一个信号,告知其停止。此信号称为HUP(挂断)。这个名字源于人们使用电话线拨号接入服务器的时代/当线路上有噪音时,这些连接有时会中断。然后您可以选择保持程序运行或进行清理。所做的选择是向所有程序发送信号 1,SigHUP。然后程序将整齐地清理(例如,文本编辑器将保存其文件并退出。游戏将保存并退出,等等)。

您可以编写一个程序并允许它拦截请求,在这种情况下您可以选择不做任何事情。或者使用nohup包装器为您完成此操作。

例子:

cd /usr/src/linux ; make bzImage将开始编译新内核。这可能需要很长时间(在 80486 时代通常需要几个小时)。

在此期间,我的终端一直很忙,希望显示新内核编译成功。我无法做其他任何事情。

现在,如果我&在命令中添加一个 & 符号 ( ),它将在后台运行。
但是,当我注销时,它仍会收到 sigHup。

解决方案:**nohup** command_here **&**
请注意命令前面的 nohup 和末尾的 & 符号(这也意味着它不会接收输入)。


所有这些都假设您正在运行 bash,并且您不想从 KDE 窗口管理器触发任何操作。我确信这也是可能的(但这不是问题所在)。

相关内容