根据这里的一些帖子,我尝试运行一个简单的脚本来清理一个在重启和关机时包含临时内容的文件夹。
按照说明和自述文件,我编写了这个脚本:
/etc/init.d/cleantmp
#!/bin/sh
### BEGIN INIT INFO
# Provides: cleantmp
# Required-Start:
# Required-Stop: $local_fs
# Default-Start:
# Default-Stop: 0 1 6
# Short-Description: clean temporary folders
# Description:
### END INIT INFO
PATH=/sbin:/usr/sbin:/bin:/usr/bin
echo "Clean up temporary folders"
rm -rf /home/user/tmp/*
然后我给了它执行权:
$ sudo chmod +x /etc/init.d/cleantmp
$ ls -l /etc/init.d/cleantmp
-rwxr-xr-x 1 root root 329 Dec 19 12:50 /etc/init.d/cleantmp
然后我更新rc:
$ sudo update-rc.d cleantmp defaults
$ ls -l /etc/rc?.d/*cleantmp
lrwxrwxrwx 1 root root 18 Dec 19 13:12 /etc/rc0.d/K01cleantmp -> ../init.d/cleantmp
lrwxrwxrwx 1 root root 18 Dec 19 13:12 /etc/rc1.d/K01cleantmp -> ../init.d/cleantmp
lrwxrwxrwx 1 root root 18 Dec 19 13:12 /etc/rc6.d/K01cleantmp -> ../init.d/cleantmp
到目前为止,一切都很好。但关机重启或重启后,临时文件仍然存在。如果我使用文件直接调用其中一个符号链接,则会sudo
正确消失。
这里有什么问题?
操作系统:Linux 4.4.0-104-generic #127-Ubuntu | Ubuntu Gnome 16.04.3 LTS 64 位
存在三个重大错误:
rc
脚本,当时 Ubuntu 16 是一个 systemd 操作系统,并且实际上是自十多年前使用 van Smoorenburg 以来的第二个init 系统。如果你在 Ubuntu Linux 上做新的东西,rc
不要从 van Smoorenburg 开始。rc
rc
脚本很糟糕,没有遵循init-d-script
(5) 手册页中的说明或示例。您的rc
脚本没有正确响应调用此类脚本的各种子命令,对于初学者或 Debian/Ubuntu 标准函数库的来源。原则上,首先不要从 Ubuntu Linux 上已经过时十多年的东西开始,把它扔掉。
clean-user-tmp.conf
文件/etc/tmpfiles.d
,或者/etc/systemd/system/clean-user-tmp.service
东西 并启用它 , 或者/home/user/.local/share/systemd/user/clean-tmp.service
并启用它 .进一步阅读