Skip to content

Instantly share code, notes, and snippets.

@ripienaar
Created March 26, 2015 19:31
Show Gist options
  • Save ripienaar/b8a3c05991a61e679a95 to your computer and use it in GitHub Desktop.
Save ripienaar/b8a3c05991a61e679a95 to your computer and use it in GitHub Desktop.
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
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