Список процессов, которые выполнялись более 2 часов

¡Después de leer las fuentes del kernel, encontré una función que necesitamos incluir en la lista negra!

Gracias a Stephen Kitt por la pista sobre initcall_blacklist.

Agregue initcall_blacklist=dw_i2c_init_drivera la línea de comando del kernel. Esto funciona para mí en el kernel 4.15.0.

Para cualquier otra persona que encuentre esta respuesta. Puedes hacerlo editando/etc/default/grub:

  1. Ejecutar en la terminal:sudo -H gedit /etc/default/grub.
  2. Añadir cadena de lista negra aGRUB_CMDLINE_LINUX_DEFAULT:GRUB_CMDLINE_LINUX_DEFAULT="… initcall_blacklist=dw_i2c_init_driver".
  3. Guarde el archivo, cierre el editor.
  4. Ejecutar en el terminal:sudo update-grub.
  5. ¡Reiniciar y probar!

2
19.07.2019, 19:36
1 ответ

Кое-что, что я написал пару лет назад. Это ищет имя приложения, указанное в переменной progname, и убивает его, если оно старше, чем значение в переменной killtime (в секундах ). Вам нужно будет изменить имя программы, чтобы оно соответствовало имени процесса, возвращаемому командой ps -o comm. Вам также придется изменить значение killtime, чтобы оно соответствовало желаемому количеству секунд. Может запускать cronjob для проверки время от времени.

Убедитесь, что вы знаете, что все это делает, прежде чем запускать его, иначе это может убить неожиданные процессы.

Это работает в RHEL 7.x, поэтому Solaris не очень положителен, но они очень близки, поэтому он может работать с небольшими настройками или без них. Если есть ошибки форматирования прошу прощения. Был некоторый остаточный беспорядок форматирования, который я должен был очистить.

###With email send on process kill
#!/bin/bash ############################################################################## #  Name: checkRunawaProgram.sh
 #  Version: 1.0
 #  Date: 10/07/2015
 #  Author: Mark S
 #  Description: check processes for a named command and if older than a specified time in seconds kill the process.
 #Note about time: If killtime is over 60 seconds it will be off by 40 seconds.
 #  Example:./checkRunawaProgram.sh fire off from cronjob or run manually
 #NOTE: adjust the progname and killtime fields for your file and delay time.
 # and adjust email address to your addr. 
 #EDITED By-On-Why
 #Mark-10/08/15-Clean up and add variables progname and killtime
#Mark-10/9/15 Add email and logger 
#
##############################################################################
progname=runawaProgram.sh
killtime=50
ps -o uname,pid,etime,comm -C $progname \
| while read user pid elapsed comm
         do
         echo etime $elapsed
         echo pid $pid
         #Strip off : from elapsed and store in elapsed1
         elapsed1=${elapsed//[:]/}
         echo elapsed1 $elapsed1
         if [ ${elapsed1} -gt ${killtime} ]
         then
         echo greater than 10 on pid $pid
         echo killing pid $pid
         kill $pid ## ##email Variables
 now=`date`
 subject="es-ppscnftp01 cron killing process  $pid"
 varHost=`hostname`
 sendTo="youremail@yourdomain.net"
 mail -s "$subject" "$sendTo" << END_MAIL
 From $varHost
 The process ID $pid was killed
the process name was $comm
END_MAIL
#send info to /var/log/messages
 logger The cronjob checkRunawaProgram.sh killed the $pid process for Process name $comm
 fi
 done
0
27.01.2020, 22:24

Теги

Похожие вопросы