xen7.0版本atd bug导致狂打日志问题处理
2020-03-10
本博客所有文章采用的授权方式为 自由转载-非商用-非衍生-保持署名 ,转载请务必注明出处,谢谢。
背景
xen7.X版本的hypervisor环境发现daemon.log 不停的增长,都是打印如下的日志
Aug 21 04:13:57 server10 atd[10157]: File a0007501764265 is in wrong format - aborting
Aug 21 04:13:57 server10 atd[10158]: File a0007501764265 is in wrong format - aborting
Aug 21 04:13:57 server10 atd[10159]: File a0007501764265 is in wrong format - aborting
Aug 21 04:13:57 server10 atd[10160]: File a0007501764265 is in wrong format - aborting
Aug 21 04:13:57 server10 atd[10161]: File a0007501764265 is in wrong format - aborting
Aug 21 04:13:57 server10 atd[10162]: File a0007501764265 is in wrong format - aborting
Aug 21 04:13:57 server10 atd[10163]: File a0007501764265 is in wrong format - aborting
对应的at 版本
at-3.1.13-20.el7.x86_64
该xen版本是基于centos7.X,
patch 过程
rpm包的发行版,除了 发行可rpm 安装的版本,一般还会有该软件包的src 包(包括源码和相关的patch)
获取源码
获取上图中的 Source Package,rpm -i安装后就会看到如下目录
[wsg@localhost rpmbuild]$ ll
total 4
drwxr-xr-x. 2 wsg wsg 4096 Mar 18 14:27 SOURCES
drwxr-xr-x. 2 wsg wsg 21 Mar 18 14:27 SPECS
[wsg@localhost rpmbuild]$ pwd
/home/wsg/rpmbuild
[wsg@localhost rpmbuild]$
其中 SOURCE目录就是源码目录,其中包括初始的源码和后续的patch
[wsg@localhost rpmbuild]$ cd SOURCES/
[wsg@localhost SOURCES]$ ll
total 220
-rw-rw-r--. 1 wsg wsg 861 Oct 30 2018 at-3.1.10-filter-environment.patch
-rw-rw-r--. 1 wsg wsg 578 Oct 30 2018 at-3.1.12-fix_no_export.patch
-rw-rw-r--. 1 wsg wsg 685 Oct 30 2018 at-3.1.12-nowrap.patch
-rw-rw-r--. 1 wsg wsg 588 Oct 30 2018 at-3.1.12-opt_V.patch
-rw-rw-r--. 1 wsg wsg 1619 Oct 30 2018 at-3.1.12-shell.patch
-rw-rw-r--. 1 wsg wsg 4082 Oct 30 2018 at-3.1.13-aborted-jobs.patch
-rw-rw-r--. 1 wsg wsg 1416 Oct 30 2018 at-3.1.13-clear-nonjobs.patch
-rw-rw-r--. 1 wsg wsg 607 Oct 30 2018 at-3.1.13-document-n.patch
-rw-rw-r--. 1 wsg wsg 665 Oct 30 2018 at-3.1.13-fclose-error.patch
-rw-rw-r--. 1 wsg wsg 668 Oct 30 2018 at-3.1.13-help.patch
-rw-rw-r--. 1 wsg wsg 535 Oct 30 2018 at-3.1.13-log-jobs.patch
-rw-rw-r--. 1 wsg wsg 1759 Oct 30 2018 at-3.1.13-mailwithhostname.patch
-rw-rw-r--. 1 wsg wsg 4081 Oct 30 2018 at-3.1.13-makefile.patch
-rw-rw-r--. 1 wsg wsg 3502 Oct 30 2018 at-3.1.13-nitpicks.patch
-rw-rw-r--. 1 wsg wsg 122544 Oct 30 2018 at_3.1.13.orig.tar.gz
-rw-rw-r--. 1 wsg wsg 12264 Oct 30 2018 at-3.1.13-pam.patch
-rw-rw-r--. 1 wsg wsg 5771 Oct 30 2018 at-3.1.13-selinux.patch
-rw-rw-r--. 1 wsg wsg 2868 Oct 30 2018 at-3.1.13-usePOSIXtimers.patch
-rw-rw-r--. 1 wsg wsg 803 Oct 30 2018 at-3.1.13-utc-dst.patch
-rwxrwxr-x. 1 wsg wsg 2122 Oct 30 2018 atd.init
-rw-rw-r--. 1 wsg wsg 403 Oct 30 2018 atd.sysconf
-rw-rw-r--. 1 wsg wsg 222 Oct 30 2018 atd.systemd
-rw-rw-r--. 1 wsg wsg 272 Oct 30 2018 pam_atd
[wsg@localhost SOURCES]$
SPEC目录中的配置文件,有相关的build选项,包括需要哪些patch,configure 和make相关命令
build 和make的选项
%build
# patch9 touches configure.in
autoconf
# clean old pregenerated files
rm -f lex.yy.* y.tab.*
%configure --with-atspool=%{_localstatedir}/spool/at/spool \
--with-jobdir=%{_localstatedir}/spool/at \
--with-daemon_username=root \
--with-daemon_groupname=root \
--with-selinux \
%if %{with pam}
--with-pam
%endif
make
%install
make install \
DAEMON_USERNAME=`id -nu`\
DAEMON_GROUPNAME=`id -ng` \
DESTDIR=%{buildroot}\
sbindir=%{buildroot}%{_prefix}/sbin\
bindir=%{buildroot}%{_bindir}\
prefix=%{buildroot}%{_prefix}\
exec_prefix=%{buildroot}%{_prefix}\
docdir=%{buildroot}/usr/doc\
mandir=%{buildroot}%{_mandir}\
etcdir=%{buildroot}%{_sysconfdir} \
ATJOB_DIR=%{buildroot}%{_localstatedir}/spool/at \
ATSPOOL_DIR=%{buildroot}%{_localstatedir}/spool/at/spool \
INSTALL_ROOT_USER=`id -nu` \
INSTALL_ROOT_GROUP=`id -nu`;
echo > %{buildroot}%{_sysconfdir}/at.deny
从spec的配置里,也发现了at 的git 仓库地址,好多开源的 软件包也都放在这边。
https://salsa.debian.org/debian/at/-/commits/master
patch
有时候没有现成的patch,可以 先尝试 build
rpmbuild -ba at.spec
这样就会 生成 打了所有patch之后的源码目录(位于BUILD目录)
drwxr-xr-x. 3 wsg wsg 23 Mar 17 18:12 BUILD
drwxr-xr-x. 2 wsg wsg 6 Mar 17 18:12 BUILDROOT
drwxr-xr-x. 3 wsg wsg 20 Mar 17 18:12 RPMS
drwxr-xr-x. 2 wsg wsg 4096 Mar 18 14:26 SOURCES
drwxr-xr-x. 2 wsg wsg 21 Mar 17 17:55 SPECS
drwxr-xr-x. 2 wsg wsg 38 Mar 17 18:12 SRPMS
[wsg@localhost rpmbuild_before]$
[wsg@localhost at-3.1.13]$ pwd
/home/wsg/rpmbuild_before/BUILD/at-3.1.13
[wsg@localhost at-3.1.13]$
这样可以 在上面的源码上 直接修改,修改后直接 手动 congfigure 和 make,这样就产生了 atd的可执行文件
参考
https://bugs.debian.org/cgi-bin/bugreport.cgi?att=1;bug=638256
https://bugzilla.redhat.com/show_bug.cgi?id=718422