¡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_driver
a 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
:
sudo -H gedit /etc/default/grub
. GRUB_CMDLINE_LINUX_DEFAULT
:GRUB_CMDLINE_LINUX_DEFAULT="… initcall_blacklist=dw_i2c_init_driver"
. sudo update-grub
. Кое-что, что я написал пару лет назад. Это ищет имя приложения, указанное в переменной 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