Created
March 26, 2015 19:31
-
-
Save ripienaar/b8a3c05991a61e679a95 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pid: 1325 exe: /usr/libexec/mysqld cmdline: /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock: /usr/lib64/libssl.so.1.0.1e | |
pid: 1356 exe: /usr/sbin/exim cmdline: /usr/sbin/exim -bd -q1h: /usr/lib64/libssl.so.1.0.1e | |
pid: 1367 exe: /usr/sbin/httpd cmdline: /usr/sbin/httpd: /usr/lib64/libssl.so.1.0.1e | |
pid: 1456 exe: /usr/sbin/bacula-fd cmdline: /usr/sbin/bacula-fd -u root -g bacula -c /etc/bacula/bacula-fd.conf: /usr/lib64/libssl.so.1.0.1e | |
pid: 20203 exe: /usr/sbin/httpd cmdline: /usr/sbin/httpd: /usr/lib64/libssl.so.1.0.1e | |
pid: 20204 exe: /usr/sbin/httpd cmdline: /usr/sbin/httpd: /usr/lib64/libssl.so.1.0.1e | |
pid: 20205 exe: /usr/sbin/httpd cmdline: /usr/sbin/httpd: /usr/lib64/libssl.so.1.0.1e | |
pid: 20206 exe: /usr/sbin/httpd cmdline: /usr/sbin/httpd: /usr/lib64/libssl.so.1.0.1e | |
pid: 20207 exe: /usr/sbin/httpd cmdline: /usr/sbin/httpd: /usr/lib64/libssl.so.1.0.1e | |
pid: 20208 exe: /usr/sbin/httpd cmdline: /usr/sbin/httpd: /usr/lib64/libssl.so.1.0.1e | |
pid: 20209 exe: /usr/sbin/httpd cmdline: /usr/sbin/httpd: /usr/lib64/libssl.so.1.0.1e | |
pid: 20210 exe: /usr/sbin/httpd cmdline: /usr/sbin/httpd: /usr/lib64/libssl.so.1.0.1e |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def cmdline(pid) | |
prog = File.read(File.join("/proc", pid, "cmdline")) | |
prog.gsub!(0.chr, " ") | |
prog.chop | |
end | |
def exe(pid) | |
File.readlink(File.join("/proc", pid, "exe")) | |
rescue | |
"kernel" | |
end | |
def pid_map(pid, library) | |
File.readlines(File.join("/proc", pid, "maps")).map do |line| | |
next unless line.include?(library) | |
address, perms, offset, dev, inode, pathname, deleted = line.split(" ") | |
if deleted.to_s.include?("deleted") | |
pathname | |
else | |
nil | |
end | |
end.compact.uniq | |
end | |
need_restart = [] | |
Dir.entries("/proc").grep(/^\d+/).map do |pid| | |
next if exe(pid) == "kernel" | |
map = pid_map(pid, "libssl") | |
unless map.empty? | |
need_restart << {"exe" => exe(pid), "pid" => pid, "libraries" => map.compact, "cmdline" => cmdline(pid)} | |
end | |
end | |
need_restart.each do |pid| | |
puts "pid: %s exe: %s cmdline: %s: %s" % [pid["pid"], pid["exe"], pid["cmdline"], pid["libraries"]] | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment