commit 0b00cbe8449924a5bd95084c44dbbbcd88ac0138 Author: dogsheng <960055655@qq.com> Date: Tue Nov 19 11:53:12 2019 +0800 Package init diff --git a/acct-6.6.4.tar.gz b/acct-6.6.4.tar.gz new file mode 100644 index 0000000..20fc605 Binary files /dev/null and b/acct-6.6.4.tar.gz differ diff --git a/accton-create b/accton-create new file mode 100644 index 0000000..4e889fa --- /dev/null +++ b/accton-create @@ -0,0 +1,5 @@ +#!/bin/sh +ACCTFILE=/var/account/pacct +if [ ! -r $ACCTFILE ];then + touch $ACCTFILE && chmod 600 $ACCTFILE +fi diff --git a/psacct-6.6.1-SEGV-when-record-incomplete.patch b/psacct-6.6.1-SEGV-when-record-incomplete.patch new file mode 100644 index 0000000..2bfa3f8 --- /dev/null +++ b/psacct-6.6.1-SEGV-when-record-incomplete.patch @@ -0,0 +1,14 @@ +diff -Naur acct-6.6.1.orig/file_rd.c acct-6.6.1/file_rd.c +--- acct-6.6.1.orig/file_rd.c 2011-03-16 23:50:13.000000000 +0100 ++++ acct-6.6.1/file_rd.c 2013-10-10 14:21:21.801097725 +0200 +@@ -118,6 +118,10 @@ + ? max_recs + : fri->buffered_records); + ++ /* Preventing SEGV when incomplete record appears */ ++ if (recs_to_read==0) ++ goto no_more_records; ++ + /* Move back in the file */ + + (void)fseek(fri->fp, -fri->record_size * recs_to_read, diff --git a/psacct-6.6.2-unnumberedsubsubsec.patch b/psacct-6.6.2-unnumberedsubsubsec.patch new file mode 100644 index 0000000..758d398 --- /dev/null +++ b/psacct-6.6.2-unnumberedsubsubsec.patch @@ -0,0 +1,21 @@ +diff -Naur acct-6.6.2.orig/accounting.texi acct-6.6.2/accounting.texi +--- acct-6.6.2.orig/accounting.texi 2014-11-08 05:46:16.000000000 +0100 ++++ acct-6.6.2/accounting.texi 2014-11-28 19:08:02.935000000 +0100 +@@ -491,7 +491,7 @@ + @code{ac} (provided you specify the other flags that will make GNU + @code{ac} behave like the system's). + +-@unnumberedsubsubsec The Shutdown/Reboot Problem ++@unnumberedsubsec The Shutdown/Reboot Problem + + On Suns, @code{init} is a little screwed up. For some reason, after a + shutdown record is written, a reboot record is written with a time-stamp +@@ -513,7 +513,7 @@ + 60 second default is that of all of the machines with this problem, the + largest timewarp was 45. + +-@unnumberedsubsubsec Stupid System V Machines ++@unnumberedsubsec Stupid System V Machines + + Some @code{ac}'s on System V machines (I've tried SGI Indigo & SGI Indy) + forget to pay attention to the @code{ut_type} field in a @code{struct diff --git a/psacct-6.6.4-lastcomm-manpage-pid-twice.patch b/psacct-6.6.4-lastcomm-manpage-pid-twice.patch new file mode 100644 index 0000000..efa88a4 --- /dev/null +++ b/psacct-6.6.4-lastcomm-manpage-pid-twice.patch @@ -0,0 +1,13 @@ +diff -up ./lastcomm.1.ori ./lastcomm.1 +--- ./lastcomm.1.ori 2018-06-19 17:50:43.223211872 +0200 ++++ ./lastcomm.1 2018-06-19 17:50:58.211147752 +0200 +@@ -125,9 +125,6 @@ format as your current machine, but has + Print paging statistics. + .TP + .B \-\-pid +-Show PID and PPID of the process if acct version 3 format is supported by kernel. +-.TP +-.B \-\-pid + Add pid of the process and pid of the process parent to the output + (pid is the last but one and parent pid the last column). + These values are shown only when they are generated by acct function diff --git a/psacct-logrotate.in b/psacct-logrotate.in new file mode 100644 index 0000000..f3f2d3f --- /dev/null +++ b/psacct-logrotate.in @@ -0,0 +1,15 @@ +# Logrotate file for psacct RPM + +/var/account/pacct { + compress + delaycompress + notifempty + daily + rotate 31 + create 0600 root root + postrotate + if %{_bindir}/systemctl --quiet is-active psacct.service ; then + %{_sbindir}/accton /var/account/pacct | %{_bindir}/grep -v "Turning on process accounting, file set to '/var/account/pacct'." | %{_bindir}/cat + fi + endscript +} diff --git a/psacct.service b/psacct.service new file mode 100644 index 0000000..832c0c5 --- /dev/null +++ b/psacct.service @@ -0,0 +1,14 @@ +[Unit] +Description=Kernel process accounting +After=syslog.target +ConditionPathExists=/var/account + +[Service] +Type=oneshot +ExecStartPre=/usr/libexec/psacct/accton-create +ExecStart=/usr/sbin/accton /var/account/pacct +ExecStop=/usr/sbin/accton off +RemainAfterExit=yes + +[Install] +WantedBy=multi-user.target diff --git a/psacct.spec b/psacct.spec new file mode 100644 index 0000000..6eca727 --- /dev/null +++ b/psacct.spec @@ -0,0 +1,109 @@ +Name: psacct +Version: 6.6.4 +Release: 3 +Summary: Utilities for monitoring process activities +License: GPLv3+ +URL: http://www.gnu.org/software/acct/ +Source: ftp://ftp.gnu.org/pub/gnu/acct/acct-%{version}.tar.gz +Source1: psacct.service +Source2: psacct-logrotate.in +Source3: accton-create +Patch0001: psacct-6.6.2-unnumberedsubsubsec.patch +Patch0002: psacct-6.6.1-SEGV-when-record-incomplete.patch +Patch0003: psacct-6.6.4-lastcomm-manpage-pid-twice.patch +BuildRequires: autoconf systemd gcc +Requires: info coreutils +Requires(post): chkconfig systemd-sysv systemd +Requires(preun): systemd +Requires(postun): systemd +Conflicts: filesystem < 3 + +%description +The psacct package contains several utilities for monitoring process +activities, including ac, lastcomm, accton and sa: +The ac command displays statistics about how long users have been logged on. +The lastcomm command displays information about previous executed commands. +The accton command turns process accounting on or off. +The sa command summarizes information about previously executed commands. + +%package help +Summary: Help documents for psacct + +%description help +The psacct-help package conatins manual pages and other related files for psacct. + +%prep +%autosetup -n acct-%{version} -p1 + +sed -i 's|.*(gets,.*||g' lib/stdio.in.h +sed -i 's|@ACCT_FILE_LOC@|/var/account/pacct|g' files.h.in +sed -i 's|@SAVACCT_FILE_LOC@|/var/account/savacct|g' files.h.in +sed -i 's|@USRACCT_FILE_LOC@|/var/account/usracct|g' files.h.in + +%build +%configure --enable-linux-multiformat + +make + +%install +install -d %{buildroot}{/sbin,%{_bindir},%{_mandir},%{_sbindir}} +make install prefix=%{buildroot}%{_prefix} \ + bindir=%{buildroot}%{_bindir} sbindir=%{buildroot}%{_sbindir} \ + infodir=%{buildroot}%{_datadir}/info mandir=%{buildroot}%{_mandir} +cp dump-acct.8 %{buildroot}%{_mandir}/man8/ + +install -d %{buildroot}/var/account +touch %{buildroot}/var/account/pacct && chmod 0600 %{buildroot}/var/account/pacct + +install -d %{buildroot}/etc/logrotate.d +sed -e 's|%%{_bindir}|%{_bindir}|g' -e 's|%%{_sbindir}|%{_sbindir}|g' %{SOURCE2} > %{buildroot}/etc/logrotate.d/psacct + +install -d %{buildroot}%{_unitdir} +install -m644 %{SOURCE1} %{buildroot}%{_unitdir} + +install -d -m0755 %{buildroot}%{_libexecdir}/psacct +install -m755 %{SOURCE3} %{buildroot}%{_libexecdir}/psacct/ + +%post +%systemd_post psacct.service + +/sbin/install-info %{_infodir}/accounting.info %{_infodir}/dir || : +touch /var/account/pacct && chmod 0600 /var/account/pacct + +%preun +%systemd_preun psacct.service + +if [ $1 -eq 0 ]; then + /sbin/install-info --delete %{_infodir}/accounting.info %{_infodir}/dir || : +fi + +%postun +%systemd_postun_with_restart psacct.service + +%triggerun -- psacct < 6.5.5-3 +%{_bindir}/systemd-sysv-convert --save psacct >/dev/null 2>&1 ||: +/sbin/chkconfig --del psacct >/dev/null 2>&1 || : +/bin/systemctl try-restart psacct.service >/dev/null 2>&1 || : + +%files +%doc README COPYING +%dir /var/account +%{_bindir}/{ac,lastcomm} +%{_unitdir}/psacct.service +%{_infodir}/accounting.info.gz +%{_libexecdir}/psacct/accton-create +%{_sbindir}/{accton,sa,dump-utmp,dump-acct} +%attr(0600,root,root) %ghost %config /var/account/pacct +%attr(0644,root,root) %config(noreplace) /etc/logrotate.d/* +%exclude %{_bindir}/last +%exclude %{_infodir}/dir + +%files help +%{_mandir}/man1/* +%{_mandir}/man8/* +%exclude %{_mandir}/man1/last.1* + +%changelog +* Wed Nov 06 2019 yanzhihua - 6.6.4-3 +- Package init +