自从公司政策变化,将服务器转到部门后,像我这种小白总会遇到各种各样维护的问题,这不,最近两月发现NIS服务工作异常,不能实时同步远端LDAP数据了。由于NIS和DNS服务器系统是古老的SunOS 5.10,谁用谁知道,我是真的不喜欢啊~开始比较懒,请IT帮忙,但各种推诿,一个月过去问题还在,心里万千只草泥马奔腾,好吧,无奈之下只能自己硬着头皮上了。

本文记叙了解决问题的整个过程,比较啰嗦,如果您只想看问题是如何解决的,请直接跳转到本文末尾的第4节查看总结。

以下是我解决这个问题的大致过程。

1. 检查同步设置

NIS服务器上的数据每15分钟更新一次,所以肯定使用了cron服务。

啰嗦一句,Solaris下crontab文件放在/var/spool/cron/crontabs目录下:

# cd /var/spool/cron/crontabs
# ls -lh
total 14
-rw-------   1 root     sys          190 Nov 10  2006 adm
-r--------   1 root     root         452 Jan 22  2005 lp
-rw-------   1 root     root        2.0K Aug 24 15:17 root
-rw-------   1 root     sys          308 Nov 10  2006 sys
-r--------   1 root     sys          404 Feb 14  2007 uucp

有两种方法查看crontab文件的内容:
- 第一种,用编辑器直接打开/var/spool/cron/crontabs目录下相应的文件查看
- 第二种,使用命令crontab -l [username]查看,这里的username指定了要为其显示crontab文件的用户账户名称,不带username会显示当前用户缺省的crontab文件内容(如当前是root用户,则显示root文件的内容)。

以下是以root身份查看crontab的内容:

# crontab -l
# HEADER: This file was autogenerated at Thu Jul 24 08:23:09 +0800 2014 by puppet.
# HEADER: While it can still be managed manually, it is definitely not recommended.
# HEADER: Note particularly that the comments starting with 'Puppet Name' should
# HEADER: not be deleted, as doing so could cause duplicate cron jobs.
#ident  "@(#)root       1.21    04/03/23 SMI"
#
# The root crontab should be used to perform accounting data collection.
#
#
10 3 * * * /usr/sbin/logadm
15 3 * * 0 /usr/lib/fs/nfs/nfsfind
30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean
#...# L2N
# 2,17,32,47 * * * * /var/yp/etc/L2N/L2N_group > /tmp/L2N_group.log 2>&1
#
# NAC Error messages
59 23 * * * /tools/logs/filers/bin/chk.nac.messages.pl -s shenzhen 2>&1 | /bin/mailx -s 'Shenzhen NAC error messages of the day' it-she-filers-list@guyongqiangx.com
#
# l2n_ng 'make passwd' 5x per-hour
6,18,30,42,54 * * * * (cd /var/yp/etc; /usr/ccs/bin/make passwd > /tmp/l2n_ng.log 2>&1)
# 

说实话,我开始是真不知道是为什么不能同步~求爷爷告奶奶的找人帮忙检查NIS同步设置,在同事的提示之下,以下用于从远端同步LDAP数据下载passwd的内容被注释了:

# L2N
# 2,17,32,47 * * * * /var/yp/etc/L2N/L2N_group > /tmp/L2N_group.log 2>&1

以下内容用于从同步的passwd内容更新NIS服务数据:

# l2n_ng 'make passwd' 5x per-hour
6,18,30,42,54 * * * * (cd /var/yp/etc; /usr/ccs/bin/make passwd > /tmp/l2n_ng.log 2>&1)

检查完,果然是同步任务被注释了,不知道是哪个搞的鬼~真缺德!果断的编辑crontab文件将数据同步数据打开。

编辑cron内容也有个小波折。

在命令行输入crontab -e,除了下面冒出来一串不知道是什么东西的数字,毛反应都没有啊~
像这样:


# crontab -e2090

鸟哥的书上明明是说这样可以编辑crontab文件的,到底是什么情况!!!

度娘加Solaris系统管理指南里面都提到,想要在Solaris上编辑crontab,需要先设置EDITOR:


# which $EDITOR# # EDITOR=vi# export EDITOR# # which $EDITOR/usr/bin/vi

原来默认需要EDITOR变量来指定crontab的编辑器,默认EDITOR没有设置,设置完EDITOR,终于可以通过crontab -e来修改了。

修改完,仍然不能同步啊,瞬间想死的心都有了。

2. 转机,手动更新成功

绝望之下,自己尝试在命令行输入crontab中NIS数据同步的命令进行手动更新,天呐噜,竟然成功了~
希望来了,手动成功说明同步更新的功能是正常的,那问题就出在cron服务了。

3. 检查并修复cron服务

3.1 检查日志

默认cron服务的日志位于:/var/cron/log,进去一看,惊呆了,日志竟然有200M+:

# ls -lh /var/cron/
total 526230
...
-rw-------   1 root     root        218M Aug 25 17:30 log
...

那就找最近的日志看看:

# tail /var/cron/log
! c queue max run limit reached Thu Aug 24 14:56:00 2017
! rescheduling a cron job Thu Aug 24 14:56:00 2017
! c queue max run limit reached Thu Aug 24 14:56:00 2017
! rescheduling a cron job Thu Aug 24 14:56:00 2017
! c queue max run limit reached Thu Aug 24 14:56:00 2017
! rescheduling a cron job Thu Aug 24 14:56:00 2017
! c queue max run limit reached Thu Aug 24 14:56:00 2017
! rescheduling a cron job Thu Aug 24 14:56:00 2017
! c queue max run limit reached Thu Aug 24 14:56:00 2017
! rescheduling a cron job Thu Aug 24 14:56:00 2017
# 

压根不知道发生了什么事,度娘了一下”c queue max run limit reached“,我靠,说cron队列满了~~~

3.2 查找cron失败原因

根据cron的PID使用ptree检查相关进程:

# ps -ef | grep cronroot   317     1   0   Oct 01 ?           3:25 /usr/sbin/cronroot  4586  4572   0 14:56:45 pts/4       0:00 grep cron
#
# ptree 317
317   /usr/sbin/cron949   sh -c /tools/logs/filers/bin/chk.nac.messages.pl -s shenzhen 2>&1 | /bin/mailx 950   /bin/mailx -s Shenzhen NAC error messages of the day it-she-filers-list@guyongqiangx951   /usr/local/bin/perl -T /tools/logs/filers/bin/chk.nac.messages.pl -s shenzhen1878  sh -c /tools/logs/filers/bin/chk.nac.messages.pl -s shenzhen 2>&1 | /bin/mailx 1879  /bin/mailx -s Shenzhen NAC error messages of the day it-she-filers-list@guyongqiangx1880  /usr/local/bin/perl -T /tools/logs/filers/bin/chk.nac.messages.pl -s shenzhen2871  sh -c /tools/logs/filers/bin/chk.nac.messages.pl -s shenzhen 2>&1 | /bin/mailx 2872  /bin/mailx -s Shenzhen NAC error messages of the day it-she-filers-list@guyongqiangx2873  /usr/local/bin/perl -T /tools/logs/filers/bin/chk.nac.messages.pl -s shenzhen...
#
# top
load averages:  0.05,  0.07,  0.04;                    up 327+13:54:24                                     15:33:13
310 processes: 309 sleeping, 1 on cpu
CPU states:     % idle,     % user,     % kernel,     % iowait,     % swap
Memory: 4091M phys mem, 2901M free mem, 38G swap, 38G free swapPID USERNAME LWP PRI NICE  SIZE   RES STATE    TIME    CPU COMMAND9663 root       7  59    0 9176K 6848K sleep  369:18  0.00% named11148 root       2  59    0 5984K 3508K sleep   31:20  0.00% automountd271 root       1  59    0 5464K 1996K sleep   25:11  0.00% ypserv398 root      15  59    0 4996K 3156K sleep   19:02  0.00% syslogd420 root       1  59    0    0K    0K sleep   12:47  0.00% snmpd421 root       1  59    0 6928K 3104K sleep    7:45  0.00% httpd9 root      15  59    0   10M 9340K sleep    5:32  0.00% svc.configd317 root       1  59    0 2548K 1336K sleep    3:24  0.00% cron7 root      13  59    0   10M 9184K sleep    2:27  0.00% svc.startd21473 root      30  59    0 5068K 4228K sleep    2:21  0.00% nscd417 root      15  59    0   13M 9064K sleep    2:19  0.00% fmd589 root       1  59    0 2132K 1480K sleep    1:41  0.00% master237 daemon     1  59    0 2676K 1356K sleep    1:24  0.00% rpcbind1 root       1  59    0 2156K 1052K sleep    0:33  0.00% init
CPU states: 99.9% idle,  0.0% user,  0.1% kernel,  0.0% iowait,  0.0% swap
Memory: 4091M phys mem, 2901M free mem, 38G swap, 38G free swap
#

ptree命令中出现了一大堆执行任务sh -c /tools/logs/filers/bin/chk.nac.messages.pl -s shenzhen 2>&1 ...的进程,top命令显示当前竟然有310个进程。

进一步检查脚本“chk.nac.messages.pl”执行的命令,确实是失败挂起了。

看来根源是cron执行脚本中“chk.nac.messages.pl”相应的任务挂起没有返回,然后每次调用cron就生成一个进程,直到最后cron的队列满了无法再创建工作队列执行任务。

3.3 修复任务

修改crontab脚本,暂时不再执行“chk.nac.messages.pl”,这还没完,因为cron队列满了,所以kill所有chk.nac.messages.pl相关任务,重启cron服务,一切又恢复如初了。

修改crontab脚本时,觉得修改完肯定要重启cron服务才行,网上找了半天,一句也没提到如何在Solaris下重启cron服务,无奈之下,直接将cron进程kill了,再次检查cron进程,发现系统自动生成了一个,这个好,不用想法如何重启了。

4. 总结

说了一大篇废话,以下是解决步骤的总结:
1. 在确认同步设置正确的情况下,手动尝试同步数据成功,说明问题出在cron服务上;
2. 检查cron服务日志文件/var/cron/log,定位到文件末尾,发现大量日志信息:

! c queue max run limit reached Thu Aug 24 14:56:00 2017
! rescheduling a cron job Thu Aug 24 14:56:00 2017
  1. 根据日志信息进行百度,发现cron队列满了
  2. 用ptree命令查找cron服务相关进程,发现chk.nac.messages.pl脚本相关的任务特别多
  3. 手动检查chk.nac.messages.pl任务的执行,发现进程挂起来了。因此根源是cron在其队列中不断定时创建这个任务,但任务不会结束,导致cron队列里的任务越来越多,最后队列满了无法再启动新的任务
  4. 取消失败任务,杀死cron队列中的挂起进程,cron服务正常运作。

5. 官方Solaris管理手册系列

最后,对于Solaris新手,果断献上官方的Solaris管理手册系列:
- 《Solaris系统管理指南:基本管理》
- 《Solaris系统管理指南:高级管理》
- 《Solaris系统管理指南:安全性服务》
- 《Solaris系统管理指南:网络服务》
- 《Solaris系统管理指南:IP服务》
- 《Solaris系统管理指南:命名和目录服务(DNS、NIS和LDAP)》
- 《Solaris系统管理指南:Naming and Directory Services (NIS+) 》

Solaris系统cron服务异常解决记录相关推荐

  1. IE8下JQuery clone 出的select元素使用append添加option异常解决记录

    IE8下JQuery clone 出的select元素使用append添加option异常解决记录 参考文章: (1)IE8下JQuery clone 出的select元素使用append添加opti ...

  2. HBase中此类异常解决记录org.apache.hadoop.ipc.RemoteException(java.io.IOException):

    HBase中此类异常解决记录org.apache.hadoop.ipc.RemoteException(java.io.IOException): 参考文章: (1)HBase中此类异常解决记录org ...

  3. 交管12123服务器维护,交管12123服务异常怎么办?交管12123 APP服务异常解决方法...

    交管12123APP是可以随时为你查询违章.缴纳违法费用等服务的软件,也是一款专门为了驾校考试研发的软件,但是最近很多用户发现登录时会遇到服务异常的问题,那么,要怎么解决这个问题呢?接下来,小编就为大 ...

  4. Unexpected Exception caught setting 异常解决记录

    一,Unexpected Exception caught setting 异常 今天在做crm项目时,想要实现一个客户列表的分页查询,但在action总是不能成功把分页数据带回给jsp,初次查询之后 ...

  5. oracle windows系统oracle服务消失解决办法

    打开CMD (管理员权限)  切换到oracle 的bin目录 oradim -NEW -SID XE -STARTMODE manual -PFILE "E:\oraclexe\app\o ...

  6. 交管123缴费显示代理服务器异常,交管12123服务异常怎样办 交管12123 APP服务异常处理办法...

    软件安装:手机应用宝 随着科技的发展,手机在我们的生活中扮演了很重要的角色,手机在便利我们生活的同时,也会对我们造成很重要的影响.手机已经成为了我们的必需品,不仅是通讯工具,而且很大程度上都是娱乐功能 ...

  7. 注册交管12123服务器异常,交管12123提示服务异常怎么解决

    交管211312123违章查询显示服务异常可能有以下几点5261原因:1 .用网4102页版本的12123进入,绑定驾驶证,需要再次绑定:16532.更换驾驶证,驾驶证的档案编码不一样,要把驾驶证解绑 ...

  8. 乐视账号服务器关闭,乐视手机恢复出厂设置之后服务异常怎么办_无法登录乐视帐号解决办法_智能家...

    近期由于乐视账号服务器调整,出现了乐视手机重置后登录不了乐视账号,乐视手机恢复出厂设置之后服务异常是什么原因?小明同学为大家带来了无法登录乐视帐号解决办法... 乐视手机无法登录乐视帐号解决办法 乐视 ...

  9. 记录一次cefsharp1输入法在win7下异常解决定位

    最近几天都被基于cefSharp封装的浏览器控件搞疯了!对于cefSharp基本满足当前所做项目的需求,但是有一个问题一直困扰我,那就是系统中偶尔会出现输入法不能转换到中文.而且这个问题似乎没有什么规 ...

  10. task文件服务器无法输入,Win10系统无法启动task scheduler服务的解决方法

    Win10无法启动"task scheduler服务"怎么办?task scheduler是一个任务调度程序,用户可以使用task scheduler自动运行计算机任务.在Win1 ...

最新文章

  1. ubuntu 大小写指示的小工具
  2. vivox50pro鸿蒙系统,vivo X50 Pro最适合用来拍风景,看看网友的作品就知道了
  3. object转成实体对象_Object.assign 原理及其实现
  4. [转]对贡献有激情,对回报有信心
  5. 使用AspectJ审计Spring MVC Webapp。 第1部分
  6. ZooKeeper -- API文档
  7. delphi7 安装delphi 5 delphi 6控件
  8. Leetcode刷题系列汇总
  9. Sublime Text 教程
  10. pytorch 与 numpy 的相互转换
  11. java.lang.ClassCastException: org.apache.hadoop.mapreduce.lib.input.FileSplit cannot be cast to...
  12. 010-flutter dart代码后台执行,没有界面的情况下
  13. 嵌入式驱动学习之PWM蜂鸣器驱动
  14. 测试用例设计—场景分析法
  15. Web3 | DID赛道之 Galxe(原 Project Galaxy)
  16. hadoop集群搭建完整教程,java电商项目面试技巧
  17. Kubernetes 三大探针及探针方式
  18. EasyTouch API接口简介
  19. 开发智力的好东西~~~给孩子玩
  20. 辰视将携3D视觉新技术新产品参加2021广东工博会暨广东自动化展

热门文章

  1. iOS视频播放器开发
  2. java开发软件Myeclipse汉化教程
  3. three.js入门——写个小车
  4. 几种短距离无线通信技术及未来展望
  5. CMPP3.0状态报告状态码
  6. 《诗经》(全集) (2)
  7. Linux安装expect命令
  8. 《css世界》- 详细重点笔记与技巧
  9. pscc2019滤镜抽出_「PS-CC2019新版教程」魔棒工具,让你一秒钟完成抠图-基础篇
  10. 【全套完结】高频电子线路实验手册——全套实验报告册