Run updatedb from via systemd timer instead of cron

This commit is contained in:
Michal Sekletar 2015-06-09 17:51:01 +02:00
parent b535ab95f0
commit 6795a4954c
4 changed files with 50 additions and 7 deletions

View File

@ -1,5 +1,4 @@
#!/bin/sh
nodevs=$(< /proc/filesystems awk '$1 == "nodev" && $2 != "rootfs" && $2 != "zfs" { print $2 }')
renice +19 -p $$ >/dev/null 2>&1
ionice -c2 -n7 -p $$ >/dev/null 2>&1
/usr/bin/updatedb -f "$nodevs"

14
mlocate-updatedb.service Normal file
View File

@ -0,0 +1,14 @@
[Unit]
Description=Update a database for mlocate
[Service]
Type=oneshot
ExecStart=/usr/libexec/mlocate-run-updatedb
Nice=19
IOSchedulingClass=2
IOSchedulingPriority=7
PrivateTmp=true
PrivateDevices=true
PrivateNetwork=true
ProtectSystem=true

10
mlocate-updatedb.timer Normal file
View File

@ -0,0 +1,10 @@
[Unit]
Description=Updates mlocate database every day
[Timer]
OnCalendar=daily
AccuracySec=24h
Persistent=true
[Install]
WantedBy=timers.target

View File

@ -3,16 +3,18 @@
Summary: An utility for finding files by name
Name: mlocate
Version: 0.26
Release: 10%{?dist}
Release: 11%{?dist}
License: GPLv2
URL: https://fedorahosted.org/mlocate/
Group: Applications/System
Source0: https://fedorahosted.org/releases/m/l/mlocate/mlocate-%{version}.tar.xz
Source1: updatedb.conf
Source2: mlocate.cron
Requires: crontabs
Source2: mlocate-run-updatedb
Source3: mlocate-updatedb.service
Source4: mlocate-updatedb.timer
Requires(pre): shadow-utils
Requires(post): grep, sed
BuildRequires: systemd
Provides: bundled(gnulib)
Obsoletes: slocate <= 2.7-30
@ -36,7 +38,10 @@ make install DESTDIR=$RPM_BUILD_ROOT INSTALL='install -p' groupname=slocate
mkdir -p $RPM_BUILD_ROOT{%{_sysconfdir},/etc/cron.daily}
install -p -m 644 %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/updatedb.conf
install -p -m 750 %{SOURCE2} $RPM_BUILD_ROOT/etc/cron.daily/mlocate
install -D -p -m 750 %{SOURCE2} $RPM_BUILD_ROOT%{_libexecdir}/mlocate-run-updatedb
install -D -p -m 644 %{SOURCE3} $RPM_BUILD_ROOT%{_unitdir}/mlocate-updatedb.service
install -D -p -m 644 %{SOURCE4} $RPM_BUILD_ROOT%{_unitdir}/mlocate-updatedb.timer
# %%ghost semantics is so stupid
touch $RPM_BUILD_ROOT%{_localstatedir}/lib/mlocate/mlocate.db
@ -50,18 +55,33 @@ exit 0
if /bin/grep -q '^[^#]*DAILY_UPDATE' %{_sysconfdir}/updatedb.conf; then
/bin/sed -i.rpmsave -e '/DAILY_UPDATE/s/^/#/' %{_sysconfdir}/updatedb.conf
fi
%systemd_post mlocate-updatedb.timer
%preun
%systemd_preun mlocate-updatedb.timer
%postun
%systemd_postun_with_restart mlocate-updatedb.timer
%triggerin -- %{name} < 0.26-11
/usr/bin/systemctl start mlocate-updatedb.timer
%files -f mlocate.lang
%doc AUTHORS COPYING NEWS README
%attr(0700,-,-) %config(noreplace) /etc/cron.daily/mlocate
%config(noreplace) %{_sysconfdir}/updatedb.conf
%attr(2711,root,slocate) %{_bindir}/locate
%{_unitdir}/mlocate-updatedb.service
%{_unitdir}/mlocate-updatedb.timer
%{_libexecdir}/mlocate-run-updatedb
%{_bindir}/updatedb
%{_mandir}/man*/*
%dir %attr(0750,root,slocate) %{_localstatedir}/lib/mlocate
%ghost %attr(0640,root,slocate) %{_localstatedir}/lib/mlocate/mlocate.db
%changelog
* Tue Jun 9 2015 Michal Sekletar <msekleta@redhat.com> - 0.26-11
- migrate from cron job to systemd timer
* Tue May 26 2015 Michal Sekletar <msekleta@redhat.com> - 0.26-10
- prune path /var/lib/ceph (#1223582)