У меня есть ssd-диск в моем ноутбуке, и я следовал различным советам, в которых говорилось поставить / var / log / var / spool & amp; / var / cache для tmpfs, чтобы постоянное чтение / запись не уменьшило жизнь моего ssd.
Тем не менее, anacron теперь не запускается, и в сообщении об ошибке в / var / log / syslog говорится
anacron[4169]: Can't chdir to /var/spool/anacron: No such file or directory
kernel: [ 3037.851604] init: anacron main process (4169) terminated with status 1
cups-pdf есть похожая проблема, и он жалуется, что / var / spool / cups-pdf не существует.
Я проверил и / var / spool /, и это правда, что ни один из них не существует.
Если я создаю эти каталоги вручную, запускаются оба процесса. Но после перезапуска каталоги снова исчезли.
Как заставить их существовать постоянно?
Между прочим, я начал со сценария "Jesse the Wind Wanderer", а затем добавил несколько дополнительных каталогов и настроек. Я временно отключил tmpfs для / tmp, / var / log и / var / spool, а затем перезагрузил компьютер, чтобы посмотреть, какие файлы журналов и каталоги спула присутствовали в сценарии, отличном от tmpfs.
Таким образом, я смог обнаружить некоторые дополнительные каталоги и файлы, которые, вероятно, нужно было создать / представить для корректной работы некоторых заданий запуска / cron.
Что касается настроек владения в скрипте, я просто использовал те же настройки владения, которые появились в сценарии не-tmpfs.
#!/bin/bash # Script to create required directories in tempfs /var (that are not otherwise created) # Thanks to http://blog.philippklaus.de/2011/02/ssd-optimizations-on-linux/ for the list below :-) for dir in apparmor apt ConsoleKit cups dist-upgrade fsck gdm hp installer lightdm news ntpstats samba speech-dispatcher unattended-upgrades upstart; do if [ ! -d /var/log/$dir ] ; then mkdir /var/log/$dir fi done touch /var/log/apport.log chown root:adm /var/log/$i for i in auth.log kern.log syslog do touch /var/log/$i chown syslog:adm /var/log/$i done for dir in anacron cron cups cups-pdf libreoffice lintian plymouth rsyslog; do if [ ! -d /var/spool/$dir ] ; then mkdir /var/spool/$dir fi done cd /var/spool rm -f mail ln -s /var/mail # needed in order for rsyslog to pick up the newly created log files: sudo service rsyslog restart /usr/bin/logger "(finished making required directories for tmpfs)"
И, конечно, сделайте скрипт исполняемым пользователем root и вызовите его из rc.local в соответствии с инструкциями Джесси.
Хорошо, поэтому ничего, что вы делаете на tmpfs, не будет сохраняться после перезапуска. Это потому, что tmpfs является временным и существует только в оперативной памяти. Все, что должно быть в tmpfs для запуска системы, должно создаваться при каждой загрузке системы. Большинство процессов, использующих / var, делают это, но некоторые, такие как anacron и cups-pdf, этого не делают.
Чтобы это исправить, вы должны создать скрипт, который создает эти каталоги каждый раз при запуске системы. Скопируйте нижеприведенное в текстовый файл, сохраните его и сделайте его исполняемым.
#!/bin/bash
# Script to create required directories in tempfs /var (that are not otherwise created)
# Thanks to http://blog.philippklaus.de/2011/02/ssd-optimizations-on-linux/ for the list below :-)
for dir in apparmor apt ConsoleKit cups dist-upgrade fsck gdm installer news ntpstats samba speech-dispatcher unattended-upgrades; do
if [ ! -d /var/log/$dir ] ; then
mkdir /var/log/$dir
fi
done
for dir in cups-pdf anacron; do
if [ ! -d /var/spool/$dir ] ; then
mkdir /var/spool/$dir
fi
done
Затем вам нужно запускать этот скрипт каждый раз, когда система запускается, добавив строку в /etc/rc.local
Я назвал свой скрипт «make_required_dirs_on_tempfs.sh», поэтому я просто добавляю Следующая строка в файл rc.local. Поместите его в конец, но над командой «0».
/PATH_TO_SCRIPT/make_required_dirs_on_tempfs.sh
Я сохранил свой скрипт в "/ mnt / data / config / scripts / start-stop", и поэтому мой файл /etc/rc.local выглядит так:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
#if [ -d "/var/cache/apt/archives" ]; then echo "/var/cache/apt/archives exists"; else mkdir /var/cache/apt/archives; fi || die "Command failed: mkdir /var/cache/apt/archives"
/mnt/data/config/scripts/start-stop/make_required_dirs_on_tempfs.sh
exit 0