PATH:
usr
/
sbin
#!/usr/bin/perl -w # # Copyright (C) 2003 by Bill Allombert <ballombe@debian.org> # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # based on a design and a bash/gawk script # # Copyright (C) 1998,2000 by Avery Pennarun, for the Debian Project. # Use, modify, and redistribute modified or unmodified versions in any # way you wish. use strict; use 5.6.0; my $dpkg_db="/var/lib/dpkg/info"; my $dpkg_origin="/etc/dpkg/origins/default"; my $popcon_conf="/etc/popularity-contest.conf"; # $popcon_conf is in shell-script format my $HOSTID = qx(unset MY_HOSTID; . $popcon_conf; echo \$MY_HOSTID ); chomp $HOSTID; if ( $HOSTID eq "") { print STDERR "You must set MY_HOSTID in $popcon_conf!\n"; exit 1; } if ( $HOSTID eq "d41d8cd98f00b204e9800998ecf8427e") { print STDERR "Warning: MY_HOSTID is the md5sum of the empty file!\n"; print STDERR "Please change it to the md5sum of a random file in $popcon_conf!\n"; } if ( $HOSTID !~ /^([a-f0-9]{32})$/) { print STDERR "Error: MY_HOSTID does not match ^([a-f0-9]{32})\$\n"; print STDERR "Please edit $popcon_conf to use a valid md5sum value\n"; exit 1; } # Architecture. my $debarch = `dpkg --print-architecture`; chomp $debarch; # Popcon release my $popconver=`dpkg-query --showformat='\${version}' --show popularity-contest`; # Vendor my $vendor="unknown"; if (open(VENDOR, "<", $dpkg_origin)) { while (<VENDOR>) { m/^Vendor: *(.*)/ and $vendor=$1; } close(VENDOR); } # Initialise time computations my $now = time; my $halfdaylen = 12 * 60 *60; my $daylen = 2 * $halfdaylen; my $monthlen = $daylen * 30; my $lastmonth = $now - $monthlen; sub trunc_time { return $halfdaylen * int($_[0] / $halfdaylen); } my %popcon=(); # List all mapped files my %mapped; if (opendir(PROC, "/proc")) { my @procfiles = readdir(PROC); closedir(PROC); foreach (@procfiles) { -d "/proc/$_" or next; m{^[0-9]+$} or next; open MAPS, "/proc/$_/maps" or next; while (<MAPS>) { m{(/.*)} or next; $mapped{$1} = 1; } close MAPS; } } # List files diverted by dpkg my %diverted; if (open DIVERSIONS, "env LC_ALL=C dpkg-divert --list|") { while (<DIVERSIONS>) { next unless /^(?:local )?diversion of (\S+) to (?:\S+)(?: by (\S+))?\s*$/; $diverted{$1} = defined $2 ? $2 : "" } close DIVERSIONS; } my %pkgs_files = (); if (opendir(my $DPKG_DB, $dpkg_db)) { for my $e (readdir($DPKG_DB)) { if ($e =~ m/^([^:]+) .*? \. list$/x) { $pkgs_files{$1} ||= []; push @{$pkgs_files{$1}}, "$dpkg_db/$e"; } } closedir($DPKG_DB); } # Read dpkg database of installed packages open PACKAGES, "dpkg-query --show --showformat='\${status} \${package}\\n'|"; while (<PACKAGES>) { /^.*installed *(.+)$/ or next; my $pkg=$1; my $bestatime = undef; my $list; # dpkg-query reports multiple times the same package for diff archs next if $popcon{$pkg}; $popcon{$pkg}=[0,0,$pkg,"<NOFILES>"]; foreach (@{$pkgs_files{$pkg}}) { open FILES, $_ or next; while (<FILES>) { chop; next unless ( ( m{/bin/|/sbin/|/lib/.+/|^/usr/games/|\.[ah]$|\.pm$|\.php$|^/boot/System\.map-} && ! m{/lib/.+-.+-.+/} && ! m{^/usr/lib/mime/packages/} || defined $mapped{$_} ) && -f $_); next if defined $diverted{$_} and $diverted{$_} ne $pkg; my($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size, $atime,$mtime,$ctime,$blksize,$blocks) = stat; if (defined $mapped{$_}) { # It's currently being accessed by a process $atime = time(); } if (!defined($bestatime) || $atime >= $bestatime) { # Truncate time to reduce informaton leak. my $tatime = &trunc_time($atime); my $tctime = &trunc_time($ctime); $bestatime=$atime; if ($atime < $lastmonth) { # Not accessed since more than 30 days. $popcon{$pkg}=[$tatime,$tctime,$pkg,$_,"<OLD>"]; } elsif ($ctime > $lastmonth && $atime-$ctime < $daylen) { # Installed/upgraded less than a month ago and not used after # install/upgrade day. $popcon{$pkg}=[$tatime,$tctime,$pkg,$_,"<RECENT-CTIME>"]; } else { # Else we `vote' for the package. $popcon{$pkg}=[$tatime,$tctime,$pkg,$_]; } } } close FILES; } } close PACKAGES; # We're not done yet. Sort the output in reverse by atime, and # add a header/footer. print "POPULARITY-CONTEST-0 TIME:",time," ID:$HOSTID ". "ARCH:$debarch POPCONVER:$popconver VENDOR:$vendor\n"; for (sort { $popcon{$b}[0] <=> $popcon{$a}[0] } keys %popcon) { print join(' ',@{$popcon{$_}}),"\n"; } print "END-POPULARITY-CONTEST-0 TIME:",time,"\n";
[+]
..
[-] lvchange
[edit]
[-] lvmdiskscan
[edit]
[-] pam_extrausers_update
[edit]
[-] vgs
[edit]
[-] pvdisplay
[edit]
[-] e2undo
[edit]
[-] pam_tally
[edit]
[-] update-initramfs
[edit]
[-] uuidd
[edit]
[-] userdel
[edit]
[-] remove-shell
[edit]
[-] setcap
[edit]
[-] apache2ctl
[edit]
[-] cryptdisks_start
[edit]
[-] cgdisk
[edit]
[-] xfs_mdrestore
[edit]
[-] cryptsetup
[edit]
[-] dbconfig-generate-include
[edit]
[-] grub-mkdevicemap
[edit]
[-] tcpdump
[edit]
[-] lvremove
[edit]
[-] unix_chkpwd
[edit]
[-] lvmsar
[edit]
[-] nologin
[edit]
[-] kpartx
[edit]
[-] augenrules
[edit]
[-] slattach
[edit]
[-] phpdismod
[edit]
[-] blkzone
[edit]
[-] genl
[edit]
[-] ebtables-nft-restore
[edit]
[-] ntfslabel
[edit]
[-] xtables-nft-multi
[edit]
[-] xfs_io
[edit]
[-] cryptsetup-reencrypt
[edit]
[-] runuser
[edit]
[-] modprobe
[edit]
[-] thin_delta
[edit]
[-] update-grub
[edit]
[-] aa-remove-unknown
[edit]
[-] a2ensite
[edit]
[-] partprobe
[edit]
[-] grpconv
[edit]
[-] iscsi_discovery
[edit]
[-] vcstime
[edit]
[-] devlink
[edit]
[-] insmod
[edit]
[-] lvreduce
[edit]
[-] zic
[edit]
[-] xfs_fsr
[edit]
[-] veritysetup
[edit]
[-] ownership
[edit]
[-] lvconvert
[edit]
[-] shadowconfig
[edit]
[-] grpunconv
[edit]
[-] pwck
[edit]
[-] raw
[edit]
[-] accessdb
[edit]
[-] blkdeactivate
[edit]
[-] ldconfig.real
[edit]
[-] pwconv
[edit]
[-] mdadm
[edit]
[-] era_check
[edit]
[-] thin_repair
[edit]
[-] update-rc.d
[edit]
[-] ldconfig
[edit]
[-] arptables-nft
[edit]
[-] apparmor_parser
[edit]
[-] mkntfs
[edit]
[-] xfs_mkfile
[edit]
[-] dhclient-script
[edit]
[-] xfs_repair
[edit]
[-] irqbalance
[edit]
[-] runlevel
[edit]
[-] halt
[edit]
[-] lvrename
[edit]
[-] swapoff
[edit]
[-] vgscan
[edit]
[-] thin_metadata_size
[edit]
[-] update-grub-gfxpayload
[edit]
[-] xfs_rtcp
[edit]
[-] fsck
[edit]
[-] sysctl
[edit]
[-] mkswap
[edit]
[-] autrace
[edit]
[-] mkhomedir_helper
[edit]
[-] pdata_tools
[edit]
[-] grub-set-default
[edit]
[-] mkfs.ext4
[edit]
[-] vgextend
[edit]
[-] iptables-nft
[edit]
[-] bcache-super-show
[edit]
[-] aa-teardown
[edit]
[-] pam_extrausers_chkpwd
[edit]
[-] xfs_growfs
[edit]
[-] shutdown
[edit]
[-] rarp
[edit]
[-] readprofile
[edit]
[-] cron
[edit]
[-] dbconfig-load-include
[edit]
[-] xfs_metadump
[edit]
[-] ausearch
[edit]
[-] xfs_copy
[edit]
[-] grub-bios-setup
[edit]
[-] ebtables-restore
[edit]
[-] lvextend
[edit]
[-] e2fsck
[edit]
[-] vgcreate
[edit]
[-] installkernel
[edit]
[-] rtacct
[edit]
[-] agetty
[edit]
[-] apache2
[edit]
[-] lvm
[edit]
[-] nameif
[edit]
[-] pvremove
[edit]
[-] grub-mkconfig
[edit]
[-] locale-gen
[edit]
[-] groupmod
[edit]
[-] acpid
[edit]
[-] make-ssl-cert
[edit]
[-] phpenmod
[edit]
[-] fstrim
[edit]
[-] mklost+found
[edit]
[-] update-info-dir
[edit]
[-] vgexport
[edit]
[-] iscsi-iname
[edit]
[-] ipmaddr
[edit]
[-] ip
[edit]
[-] mount.fuse
[edit]
[-] a2query
[edit]
[-] mount.vmhgfs
[edit]
[-] cache_dump
[edit]
[-] blockdev
[edit]
[-] luksformat
[edit]
[-] rmt
[edit]
[-] cryptdisks_stop
[edit]
[-] ip6tables-save
[edit]
[-] vgconvert
[edit]
[-] cfdisk
[edit]
[-] update-passwd
[edit]
[-] split-logfile
[edit]
[-] start-stop-daemon
[edit]
[-] grub-reboot
[edit]
[-] validlocale
[edit]
[-] httxt2dbm
[edit]
[-] zerofree
[edit]
[-] update-locale
[edit]
[-] make-bcache
[edit]
[-] ip6tables
[edit]
[-] on_ac_power
[edit]
[-] iptables-nft-restore
[edit]
[-] modinfo
[edit]
[-] chcpu
[edit]
[-] cache_metadata_size
[edit]
[-] ip6tables-nft
[edit]
[-] dosfsck
[edit]
[-] pam_getenv
[edit]
[-] ip6tables-nft-restore
[edit]
[-] thin_rmap
[edit]
[-] pam_tally2
[edit]
[-] groupadd
[edit]
[-] dmeventd
[edit]
[-] biosdecode
[edit]
[-] lsmod
[edit]
[-] pvscan
[edit]
[-] setvtrgb
[edit]
[-] e2scrub_all
[edit]
[-] mkfs.ntfs
[edit]
[-] wipefs
[edit]
[-] mkfs.vfat
[edit]
[-] mkinitramfs
[edit]
[-] mkdosfs
[edit]
[-] irqbalance-ui
[edit]
[-] fsck.vfat
[edit]
[-] pam_timestamp_check
[edit]
[-] arptables-save
[edit]
[-] update-ca-certificates
[edit]
[-] auditd
[edit]
[-] mkfs.bfs
[edit]
[-] ip6tables-legacy-restore
[edit]
[-] cache_repair
[edit]
[-] aureport
[edit]
[-] update-pciids
[edit]
[-] mysqld
[edit]
[-] vgdisplay
[edit]
[-] ufw
[edit]
[-] setvesablank
[edit]
[-] useradd
[edit]
[-] fdisk
[edit]
[-] fdformat
[edit]
[-] ntfsresize
[edit]
[-] iptables-legacy-restore
[edit]
[-] vgreduce
[edit]
[-] iscsid
[edit]
[-] mkfs.xfs
[edit]
[-] init
[edit]
[-] vgcfgrestore
[edit]
[-] multipath
[edit]
[-] fatlabel
[edit]
[-] mkfs.ext2
[edit]
[-] iptables-apply
[edit]
[-] apparmor_status
[edit]
[-] add-shell
[edit]
[-] isosize
[edit]
[-] groupmems
[edit]
[-] ntfsclone
[edit]
[-] multipathd
[edit]
[-] fsck.xfs
[edit]
[-] ethtool
[edit]
[-] telinit
[edit]
[-] rsyslogd
[edit]
[-] adduser
[edit]
[-] e4crypt
[edit]
[-] fsck.fat
[edit]
[-] grub-probe
[edit]
[-] cppw
[edit]
[-] xfs_admin
[edit]
[-] swapon
[edit]
[-] pvck
[edit]
[-] ip6tables-translate
[edit]
[-] iptables-restore
[edit]
[-] ip6tables-restore-translate
[edit]
[-] plymouthd
[edit]
[-] service
[edit]
[-] iptunnel
[edit]
[-] e2image
[edit]
[-] iptables-save
[edit]
[-] e2freefrag
[edit]
[-] groupdel
[edit]
[-] mke2fs
[edit]
[-] vpddecode
[edit]
[-] vgck
[edit]
[-] vigr
[edit]
[-] fsck.ext3
[edit]
[-] swaplabel
[edit]
[-] php-fpm7.4
[edit]
[-] arptables-restore
[edit]
[-] mkfs.msdos
[edit]
[-] newusers
[edit]
[-] dmsetup
[edit]
[-] ebtables-nft
[edit]
[-] e4defrag
[edit]
[-] iptables-legacy-save
[edit]
[-] iptables-nft-save
[edit]
[-] depmod
[edit]
[-] tipc
[edit]
[-] mkfs.btrfs
[edit]
[-] update-mime
[edit]
[-] fsck.msdos
[edit]
[-] netplan
[edit]
[-] getty
[edit]
[-] grub-install
[edit]
[-] xfs_db
[edit]
[-] kbdrate
[edit]
[-] mount.ntfs
[edit]
[-] deluser
[edit]
[-] phpquery
[edit]
[-] a2enconf
[edit]
[-] pvcreate
[edit]
[-] iucode-tool
[edit]
[-] hdparm
[edit]
[-] debugfs
[edit]
[-] xfs_estimate
[edit]
[-] mkfs.cramfs
[edit]
[-] a2dismod
[edit]
[-] ip6tables-legacy-save
[edit]
[-] thin_ls
[edit]
[-] applygnupgdefaults
[edit]
[-] iptables-legacy
[edit]
[-] ebtables
[edit]
[-] cache_writeback
[edit]
[-] mkfs.ext3
[edit]
[-] mount.lowntfs-3g
[edit]
[-] faillock
[edit]
[-] vgmerge
[edit]
[-] tzconfig
[edit]
[-] overlayroot-chroot
[edit]
[-] update-grub2
[edit]
[-] arpd
[edit]
[-] killall5
[edit]
[-] xfs_spaceman
[edit]
[-] iptables-restore-translate
[edit]
[-] switch_root
[edit]
[-] upgrade-from-grub-legacy
[edit]
[-] vgmknodes
[edit]
[-] addgroup
[edit]
[-] losetup
[edit]
[-] thin_dump
[edit]
[-] a2dissite
[edit]
[-] fixparts
[edit]
[-] arptables-nft-save
[edit]
[-] xfs_info
[edit]
[-] xtables-legacy-multi
[edit]
[-] fsadm
[edit]
[-] visudo
[edit]
[-] ldattach
[edit]
[-] lvmdump
[edit]
[-] xfs_ncheck
[edit]
[-] lvmconfig
[edit]
[-] ntfscp
[edit]
[-] aa-status
[edit]
[-] findfs
[edit]
[-] badblocks
[edit]
[-] thin_check
[edit]
[-] popularity-contest
[edit]
[-] vgimportclone
[edit]
[-] plipconfig
[edit]
[-] blkid
[edit]
[-] arptables-nft-restore
[edit]
[-] thin_restore
[edit]
[-] mpathpersist
[edit]
[-] getpcaps
[edit]
[-] resize2fs
[edit]
[-] popcon-largest-unused
[edit]
[-] dhclient
[edit]
[-] arp
[edit]
[-] lvdisplay
[edit]
[-] fsfreeze
[edit]
[-] capsh
[edit]
[-] iptables-translate
[edit]
[-] thin_trim
[edit]
[-] dpkg-reconfigure
[edit]
[-] dosfslabel
[edit]
[-] blkdiscard
[edit]
[-] chroot
[edit]
[-] rmmod
[edit]
[-] dmidecode
[edit]
[-] route
[edit]
[-] pvmove
[edit]
[-] pivot_root
[edit]
[-] e2scrub
[edit]
[-] ntfsundelete
[edit]
[-] sgdisk
[edit]
[-] vgimport
[edit]
[-] tarcat
[edit]
[-] hwclock
[edit]
[-] ip6tables-nft-save
[edit]
[-] lvresize
[edit]
[-] xfs_freeze
[edit]
[-] xfs_logprint
[edit]
[-] tc
[edit]
[-] filefrag
[edit]
[-] lvs
[edit]
[-] ebtables-save
[edit]
[-] fsck.btrfs
[edit]
[-] a2disconf
[edit]
[-] nfnl_osf
[edit]
[-] ifconfig
[edit]
[-] cache_check
[edit]
[-] sshd
[edit]
[-] arptables
[edit]
[-] fsck.ext4
[edit]
[-] iscsiadm
[edit]
[-] delgroup
[edit]
[-] xtables-monitor
[edit]
[-] era_invalidate
[edit]
[-] dmstats
[edit]
[-] rtmon
[edit]
[-] addgnupghome
[edit]
[-] iucode_tool
[edit]
[-] e2mmpstatus
[edit]
[-] logsave
[edit]
[-] xfs_scrub
[edit]
[-] chmem
[edit]
[-] chgpasswd
[edit]
[-] pvchange
[edit]
[-] mount.ntfs-3g
[edit]
[-] reboot
[edit]
[-] pam-auth-update
[edit]
[-] poweroff
[edit]
[-] lvcreate
[edit]
[-] usermod
[edit]
[-] dpkg-preconfigure
[edit]
[-] invoke-rc.d
[edit]
[-] audispd
[edit]
[-] auditctl
[edit]
[-] vgcfgbackup
[edit]
[-] vgsplit
[edit]
[-] era_restore
[edit]
[-] vgrename
[edit]
[-] gdisk
[edit]
[-] fsck.ext2
[edit]
[-] sulogin
[edit]
[-] pwunconv
[edit]
[-] lvscan
[edit]
[-] dumpe2fs
[edit]
[-] fsck.cramfs
[edit]
[-] mkfs.minix
[edit]
[-] atd
[edit]
[-] iptables
[edit]
[-] mii-tool
[edit]
[-] rmt-tar
[edit]
[-] logrotate
[edit]
[-] chpasswd
[edit]
[-] zramctl
[edit]
[-] ebtables-nft-save
[edit]
[-] cache_restore
[edit]
[-] pvs
[edit]
[-] unix_update
[edit]
[-] fstab-decode
[edit]
[-] grub-macbless
[edit]
[-] getcap
[edit]
[-] ip6tables-restore
[edit]
[-] iscsistart
[edit]
[-] xfs_quota
[edit]
[-] rtcwake
[edit]
[-] pvresize
[edit]
[-] bridge
[edit]
[-] ip6tables-legacy
[edit]
[-] mkfs
[edit]
[-] lvmpolld
[edit]
[-] xfs_scrub_all
[edit]
[-] ctrlaltdel
[edit]
[-] cpgr
[edit]
[-] e2label
[edit]
[-] sfdisk
[edit]
[-] lvmsadc
[edit]
[-] vipw
[edit]
[-] tune2fs
[edit]
[-] vgchange
[edit]
[-] apachectl
[edit]
[-] era_dump
[edit]
[-] vgremove
[edit]
[-] xfs_bmap
[edit]
[-] iconvconfig
[edit]
[-] a2enmod
[edit]
[-] mkfs.fat
[edit]
[-] mdmon
[edit]
[-] ip6tables-apply
[edit]
[-] check_forensic
[edit]
[-] grpck
[edit]
[-] fsck.minix
[edit]
[-] integritysetup
[edit]
[-] parted
[edit]