본문 바로가기

Solaris/문제해결

솔라리스 su(switch user)가 되지 않을때.


이런 경우는 일반적으로 OS queue에 su 를 이용하여 작업이 수행중인 갯수가 지정된 값 (기본값은 100)이 넘은 경우 발생한다.

해결책은 /etc/cron.d/queuedefs 파일에 queue 값을 수정해 준다.

수정이 어려울 경우, su를 이용해 수행중인 작업들 중 비정상적인 경우를 kill 시켜 주는 것도 방법이다.
su를 이용해 수행중인 작업들이 종료되지 않고 쌓이는 경우는 주로 su로 switch user 할 계정의 패스워드 등이 바뀌어서 제대로 su가 되지 않는 경우 발생하기도 한다.

queuedefs 파일을 수정하는 방법은 아래와 같다.

현재 cron job 의 queue size 는 default 값이 100 개 입니다.

위 file queuedefs 에 정의 되어 있지 않으면 100 개 란 말 입니다.

지난 12월 weekly 작업을 등록 하면서 queue 한계치에 도달 할 수치에 도달 한 것입니다.

해결책은 위 queue size 을 늘려 주는 것 입니다.

# vi /etc/cron.d/queuedefs

c.300j1n

wq!

을 추가 하고 reboot -- -r 하면 됩니다.

reboot 이 여의치 않으면 cron daemon 을 kill 후 다시 살려 주면 됩니다.

이렇게 하면 cron이 queue job 을 한번에 300 개를 돌릴수 있습니다.

일단 해결책은 이 방법입니다.주중에 정의 하고 토요일 지켜 보아야 할 것으로 판단이 됩니다.

================queuedefs 정의 법=====================

/etc/cron.d/queuedefs

DESCRIPTION

    The queuedefs file  describes  the  characteristics  of  the    queues  managed  by cron(1M).  Each non-comment line in this    file describes one queue.  The format of the  lines  are  as    follows:         q.[njobj][nicen][nwaitw]    The fields in this line are:    q    The name of the queue.  a is the default queue for jobs         started  by  at(1);  b  is  the  default queue for jobs         started by batch (see at(1)); c is  the  default  queue         for jobs run from a crontab(1) file.    njob The maximum number of jobs that can be  run  simultane-         ously  in  that queue; if more than njob jobs are ready         to run, only the first njob jobs will be run,  and  thenjob The maximum number of jobs that can be  run  simultane-         ously  in  that queue; if more than njob jobs are ready         to run, only the first njob jobs will be run,  and  the         others  will  be run as jobs that are currently running         terminate.  The default value is 100.    nice The nice(1) value to give to all  jobs  in  that  queue         that  are  not  run  with a user ID of super-user.  The         default value is 2.    nwait         The number of seconds to wait before rescheduling a job         that was deferred because more than njob jobs were run-         ning in that job's queue, or  because  the  system-wide         limit  of jobs executing has been reached.  The default         value is 60.    Lines beginning with # are comments, and are ignored.