Current Dir: /usr/sbin/
[FILE] a2disconf [ edit | delete | rename ]
[FILE] a2dismod [ edit | delete | rename ]
[FILE] a2dissite [ edit | delete | rename ]
[FILE] a2enconf [ edit | delete | rename ]
[FILE] a2enmod [ edit | delete | rename ]
[FILE] a2ensite [ edit | delete | rename ]
[FILE] a2query [ edit | delete | rename ]
[FILE] aa-load [ edit | delete | rename ]
[FILE] aa-remove-unknown [ edit | delete | rename ]
[FILE] aa-status [ edit | delete | rename ]
[FILE] aa-teardown [ edit | delete | rename ]
[FILE] accessdb [ edit | delete | rename ]
[FILE] add-shell [ edit | delete | rename ]
[FILE] addgnupghome [ edit | delete | rename ]
[FILE] addgroup [ edit | delete | rename ]
[FILE] adduser [ edit | delete | rename ]
[FILE] agetty [ edit | delete | rename ]
[FILE] apache2 [ edit | delete | rename ]
[FILE] apache2ctl [ edit | delete | rename ]
[FILE] apachectl [ edit | delete | rename ]
[FILE] apparmor_parser [ edit | delete | rename ]
[FILE] apparmor_status [ edit | delete | rename ]
[FILE] applygnupgdefaults [ edit | delete | rename ]
[FILE] argdist-bpfcc [ edit | delete | rename ]
[FILE] arpd [ edit | delete | rename ]
[FILE] arptables [ edit | delete | rename ]
[FILE] arptables-nft [ edit | delete | rename ]
[FILE] arptables-nft-restore [ edit | delete | rename ]
[FILE] arptables-nft-save [ edit | delete | rename ]
[FILE] arptables-restore [ edit | delete | rename ]
[FILE] arptables-save [ edit | delete | rename ]
[FILE] badblocks [ edit | delete | rename ]
[FILE] bashreadline-bpfcc [ edit | delete | rename ]
[FILE] bashreadline.bt [ edit | delete | rename ]
[FILE] bcache-super-show [ edit | delete | rename ]
[FILE] bindsnoop-bpfcc [ edit | delete | rename ]
[FILE] biolatency-bpfcc [ edit | delete | rename ]
[FILE] biolatency-kp.bt [ edit | delete | rename ]
[FILE] biolatency.bt [ edit | delete | rename ]
[FILE] biolatpcts-bpfcc [ edit | delete | rename ]
[FILE] biopattern-bpfcc [ edit | delete | rename ]
[FILE] biosdecode [ edit | delete | rename ]
[FILE] biosnoop-bpfcc [ edit | delete | rename ]
[FILE] biosnoop.bt [ edit | delete | rename ]
[FILE] biostacks.bt [ edit | delete | rename ]
[FILE] biotop-bpfcc [ edit | delete | rename ]
[FILE] bitesize-bpfcc [ edit | delete | rename ]
[FILE] bitesize.bt [ edit | delete | rename ]
[FILE] blkdeactivate [ edit | delete | rename ]
[FILE] blkdiscard [ edit | delete | rename ]
[FILE] blkid [ edit | delete | rename ]
[FILE] blkzone [ edit | delete | rename ]
[FILE] blockdev [ edit | delete | rename ]
[FILE] bpflist-bpfcc [ edit | delete | rename ]
[FILE] bpftool [ edit | delete | rename ]
[FILE] bridge [ edit | delete | rename ]
[FILE] btrfsdist-bpfcc [ edit | delete | rename ]
[FILE] btrfsslower-bpfcc [ edit | delete | rename ]
[FILE] cachestat-bpfcc [ edit | delete | rename ]
[FILE] cachetop-bpfcc [ edit | delete | rename ]
[FILE] cache_check [ edit | delete | rename ]
[FILE] cache_dump [ edit | delete | rename ]
[FILE] cache_metadata_size [ edit | delete | rename ]
[FILE] cache_repair [ edit | delete | rename ]
[FILE] cache_restore [ edit | delete | rename ]
[FILE] cache_writeback [ edit | delete | rename ]
[FILE] capable-bpfcc [ edit | delete | rename ]
[FILE] capable.bt [ edit | delete | rename ]
[FILE] capsh [ edit | delete | rename ]
[FILE] cfdisk [ edit | delete | rename ]
[FILE] cgdisk [ edit | delete | rename ]
[FILE] chcpu [ edit | delete | rename ]
[FILE] check_forensic [ edit | delete | rename ]
[FILE] chgpasswd [ edit | delete | rename ]
[FILE] chmem [ edit | delete | rename ]
[FILE] chpasswd [ edit | delete | rename ]
[FILE] chroot [ edit | delete | rename ]
[FILE] cobjnew-bpfcc [ edit | delete | rename ]
[FILE] compactsnoop-bpfcc [ edit | delete | rename ]
[FILE] cpgr [ edit | delete | rename ]
[FILE] cppw [ edit | delete | rename ]
[FILE] cpudist-bpfcc [ edit | delete | rename ]
[FILE] cpuunclaimed-bpfcc [ edit | delete | rename ]
[FILE] cpuwalk.bt [ edit | delete | rename ]
[FILE] criticalstat-bpfcc [ edit | delete | rename ]
[FILE] cron [ edit | delete | rename ]
[FILE] cryptdisks_start [ edit | delete | rename ]
[FILE] cryptdisks_stop [ edit | delete | rename ]
[FILE] cryptsetup [ edit | delete | rename ]
[FILE] ctrlaltdel [ edit | delete | rename ]
[FILE] dbslower-bpfcc [ edit | delete | rename ]
[FILE] dbstat-bpfcc [ edit | delete | rename ]
[FILE] dcb [ edit | delete | rename ]
[FILE] dcsnoop-bpfcc [ edit | delete | rename ]
[FILE] dcsnoop.bt [ edit | delete | rename ]
[FILE] dcstat-bpfcc [ edit | delete | rename ]
[FILE] deadlock-bpfcc [ edit | delete | rename ]
[FILE] debugfs [ edit | delete | rename ]
[FILE] delgroup [ edit | delete | rename ]
[FILE] deluser [ edit | delete | rename ]
[FILE] depmod [ edit | delete | rename ]
[FILE] devlink [ edit | delete | rename ]
[FILE] dhcpcd [ edit | delete | rename ]
[FILE] dirtop-bpfcc [ edit | delete | rename ]
[FILE] dmeventd [ edit | delete | rename ]
[FILE] dmidecode [ edit | delete | rename ]
[FILE] dmsetup [ edit | delete | rename ]
[FILE] dmstats [ edit | delete | rename ]
[FILE] dosfsck [ edit | delete | rename ]
[FILE] dosfslabel [ edit | delete | rename ]
[FILE] dpkg-preconfigure [ edit | delete | rename ]
[FILE] dpkg-reconfigure [ edit | delete | rename ]
[FILE] drsnoop-bpfcc [ edit | delete | rename ]
[FILE] dumpe2fs [ edit | delete | rename ]
[FILE] e2freefrag [ edit | delete | rename ]
[FILE] e2fsck [ edit | delete | rename ]
[FILE] e2image [ edit | delete | rename ]
[FILE] e2label [ edit | delete | rename ]
[FILE] e2mmpstatus [ edit | delete | rename ]
[FILE] e2scrub [ edit | delete | rename ]
[FILE] e2scrub_all [ edit | delete | rename ]
[FILE] e2undo [ edit | delete | rename ]
[FILE] e4crypt [ edit | delete | rename ]
[FILE] e4defrag [ edit | delete | rename ]
[FILE] ebtables [ edit | delete | rename ]
[FILE] ebtables-nft [ edit | delete | rename ]
[FILE] ebtables-nft-restore [ edit | delete | rename ]
[FILE] ebtables-nft-save [ edit | delete | rename ]
[FILE] ebtables-restore [ edit | delete | rename ]
[FILE] ebtables-save [ edit | delete | rename ]
[FILE] ebtables-translate [ edit | delete | rename ]
[FILE] era_check [ edit | delete | rename ]
[FILE] era_dump [ edit | delete | rename ]
[FILE] era_invalidate [ edit | delete | rename ]
[FILE] era_restore [ edit | delete | rename ]
[FILE] escapesrc [ edit | delete | rename ]
[FILE] ethtool [ edit | delete | rename ]
[FILE] execsnoop-bpfcc [ edit | delete | rename ]
[FILE] execsnoop.bt [ edit | delete | rename ]
[FILE] exitsnoop-bpfcc [ edit | delete | rename ]
[FILE] ext4dist-bpfcc [ edit | delete | rename ]
[FILE] ext4slower-bpfcc [ edit | delete | rename ]
[FILE] faillock [ edit | delete | rename ]
[FILE] fatlabel [ edit | delete | rename ]
[FILE] fdisk [ edit | delete | rename ]
[FILE] filefrag [ edit | delete | rename ]
[FILE] filegone-bpfcc [ edit | delete | rename ]
[FILE] filelife-bpfcc [ edit | delete | rename ]
[FILE] fileslower-bpfcc [ edit | delete | rename ]
[FILE] filetop-bpfcc [ edit | delete | rename ]
[FILE] findfs [ edit | delete | rename ]
[FILE] fixparts [ edit | delete | rename ]
[FILE] fsadm [ edit | delete | rename ]
[FILE] fsck [ edit | delete | rename ]
[FILE] fsck.btrfs [ edit | delete | rename ]
[FILE] fsck.cramfs [ edit | delete | rename ]
[FILE] fsck.ext2 [ edit | delete | rename ]
[FILE] fsck.ext3 [ edit | delete | rename ]
[FILE] fsck.ext4 [ edit | delete | rename ]
[FILE] fsck.fat [ edit | delete | rename ]
[FILE] fsck.minix [ edit | delete | rename ]
[FILE] fsck.msdos [ edit | delete | rename ]
[FILE] fsck.vfat [ edit | delete | rename ]
[FILE] fsck.xfs [ edit | delete | rename ]
[FILE] fsfreeze [ edit | delete | rename ]
[FILE] fstab-decode [ edit | delete | rename ]
[FILE] fstrim [ edit | delete | rename ]
[FILE] funccount-bpfcc [ edit | delete | rename ]
[FILE] funcinterval-bpfcc [ edit | delete | rename ]
[FILE] funclatency-bpfcc [ edit | delete | rename ]
[FILE] funcslower-bpfcc [ edit | delete | rename ]
[FILE] gdisk [ edit | delete | rename ]
[FILE] genccode [ edit | delete | rename ]
[FILE] gencmn [ edit | delete | rename ]
[FILE] genl [ edit | delete | rename ]
[FILE] gennorm2 [ edit | delete | rename ]
[FILE] gensprep [ edit | delete | rename ]
[FILE] getcap [ edit | delete | rename ]
[FILE] gethostlatency-bpfcc [ edit | delete | rename ]
[FILE] gethostlatency.bt [ edit | delete | rename ]
[FILE] getpcaps [ edit | delete | rename ]
[FILE] getty [ edit | delete | rename ]
[FILE] groupadd [ edit | delete | rename ]
[FILE] groupdel [ edit | delete | rename ]
[FILE] groupmems [ edit | delete | rename ]
[FILE] groupmod [ edit | delete | rename ]
[FILE] grpck [ edit | delete | rename ]
[FILE] grpconv [ edit | delete | rename ]
[FILE] grpunconv [ edit | delete | rename ]
[FILE] grub-bios-setup [ edit | delete | rename ]
[FILE] grub-install [ edit | delete | rename ]
[FILE] grub-macbless [ edit | delete | rename ]
[FILE] grub-mkconfig [ edit | delete | rename ]
[FILE] grub-mkdevicemap [ edit | delete | rename ]
[FILE] grub-probe [ edit | delete | rename ]
[FILE] grub-reboot [ edit | delete | rename ]
[FILE] grub-set-default [ edit | delete | rename ]
[FILE] halt [ edit | delete | rename ]
[FILE] hardirqs-bpfcc [ edit | delete | rename ]
[FILE] hdparm [ edit | delete | rename ]
[FILE] httxt2dbm [ edit | delete | rename ]
[FILE] iconvconfig [ edit | delete | rename ]
[FILE] icupkg [ edit | delete | rename ]
[FILE] init [ edit | delete | rename ]
[FILE] inject-bpfcc [ edit | delete | rename ]
[FILE] insmod [ edit | delete | rename ]
[FILE] install-sgmlcatalog [ edit | delete | rename ]
[FILE] installkernel [ edit | delete | rename ]
[FILE] integritysetup [ edit | delete | rename ]
[FILE] invoke-rc.d [ edit | delete | rename ]
[FILE] ip [ edit | delete | rename ]
[FILE] ip6tables [ edit | delete | rename ]
[FILE] ip6tables-apply [ edit | delete | rename ]
[FILE] ip6tables-legacy [ edit | delete | rename ]
[FILE] ip6tables-legacy-restore [ edit | delete | rename ]
[FILE] ip6tables-legacy-save [ edit | delete | rename ]
[FILE] ip6tables-nft [ edit | delete | rename ]
[FILE] ip6tables-nft-restore [ edit | delete | rename ]
[FILE] ip6tables-nft-save [ edit | delete | rename ]
[FILE] ip6tables-restore [ edit | delete | rename ]
[FILE] ip6tables-restore-translate [ edit | delete | rename ]
[FILE] ip6tables-save [ edit | delete | rename ]
[FILE] ip6tables-translate [ edit | delete | rename ]
[FILE] iptables [ edit | delete | rename ]
[FILE] iptables-apply [ edit | delete | rename ]
[FILE] iptables-legacy [ edit | delete | rename ]
[FILE] iptables-legacy-restore [ edit | delete | rename ]
[FILE] iptables-legacy-save [ edit | delete | rename ]
[FILE] iptables-nft [ edit | delete | rename ]
[FILE] iptables-nft-restore [ edit | delete | rename ]
[FILE] iptables-nft-save [ edit | delete | rename ]
[FILE] iptables-restore [ edit | delete | rename ]
[FILE] iptables-restore-translate [ edit | delete | rename ]
[FILE] iptables-save [ edit | delete | rename ]
[FILE] iptables-translate [ edit | delete | rename ]
[FILE] iscsi-iname [ edit | delete | rename ]
[FILE] iscsiadm [ edit | delete | rename ]
[FILE] iscsid [ edit | delete | rename ]
[FILE] iscsistart [ edit | delete | rename ]
[FILE] iscsi_discovery [ edit | delete | rename ]
[FILE] isosize [ edit | delete | rename ]
[FILE] javacalls-bpfcc [ edit | delete | rename ]
[FILE] javaflow-bpfcc [ edit | delete | rename ]
[FILE] javagc-bpfcc [ edit | delete | rename ]
[FILE] javaobjnew-bpfcc [ edit | delete | rename ]
[FILE] javastat-bpfcc [ edit | delete | rename ]
[FILE] javathreads-bpfcc [ edit | delete | rename ]
[FILE] kbdrate [ edit | delete | rename ]
[FILE] killall5 [ edit | delete | rename ]
[FILE] killsnoop-bpfcc [ edit | delete | rename ]
[FILE] killsnoop.bt [ edit | delete | rename ]
[FILE] klockstat-bpfcc [ edit | delete | rename ]
[FILE] kpartx [ edit | delete | rename ]
[FILE] kvmexit-bpfcc [ edit | delete | rename ]
[FILE] ldattach [ edit | delete | rename ]
[FILE] ldconfig [ edit | delete | rename ]
[FILE] ldconfig.real [ edit | delete | rename ]
[FILE] llcstat-bpfcc [ edit | delete | rename ]
[FILE] loads.bt [ edit | delete | rename ]
[FILE] locale-gen [ edit | delete | rename ]
[FILE] logrotate [ edit | delete | rename ]
[FILE] logsave [ edit | delete | rename ]
[FILE] losetup [ edit | delete | rename ]
[FILE] lsmod [ edit | delete | rename ]
[FILE] luksformat [ edit | delete | rename ]
[FILE] lvchange [ edit | delete | rename ]
[FILE] lvconvert [ edit | delete | rename ]
[FILE] lvcreate [ edit | delete | rename ]
[FILE] lvdisplay [ edit | delete | rename ]
[FILE] lvextend [ edit | delete | rename ]
[FILE] lvm [ edit | delete | rename ]
[FILE] lvmconfig [ edit | delete | rename ]
[FILE] lvmdiskscan [ edit | delete | rename ]
[FILE] lvmdump [ edit | delete | rename ]
[FILE] lvmpolld [ edit | delete | rename ]
[FILE] lvmsadc [ edit | delete | rename ]
[FILE] lvmsar [ edit | delete | rename ]
[FILE] lvreduce [ edit | delete | rename ]
[FILE] lvremove [ edit | delete | rename ]
[FILE] lvrename [ edit | delete | rename ]
[FILE] lvresize [ edit | delete | rename ]
[FILE] lvs [ edit | delete | rename ]
[FILE] lvscan [ edit | delete | rename ]
[FILE] lxc [ edit | delete | rename ]
[FILE] lxd [ edit | delete | rename ]
[FILE] make-bcache [ edit | delete | rename ]
[FILE] make-ssl-cert [ edit | delete | rename ]
[FILE] mdadm [ edit | delete | rename ]
[FILE] mdflush-bpfcc [ edit | delete | rename ]
[FILE] mdflush.bt [ edit | delete | rename ]
[FILE] mdmon [ edit | delete | rename ]
[FILE] memleak-bpfcc [ edit | delete | rename ]
[FILE] mkdosfs [ edit | delete | rename ]
[FILE] mke2fs [ edit | delete | rename ]
[FILE] mkfs [ edit | delete | rename ]
[FILE] mkfs.bfs [ edit | delete | rename ]
[FILE] mkfs.btrfs [ edit | delete | rename ]
[FILE] mkfs.cramfs [ edit | delete | rename ]
[FILE] mkfs.ext2 [ edit | delete | rename ]
[FILE] mkfs.ext3 [ edit | delete | rename ]
[FILE] mkfs.ext4 [ edit | delete | rename ]
[FILE] mkfs.fat [ edit | delete | rename ]
[FILE] mkfs.minix [ edit | delete | rename ]
[FILE] mkfs.msdos [ edit | delete | rename ]
[FILE] mkfs.ntfs [ edit | delete | rename ]
[FILE] mkfs.vfat [ edit | delete | rename ]
[FILE] mkfs.xfs [ edit | delete | rename ]
[FILE] mkhomedir_helper [ edit | delete | rename ]
[FILE] mkinitramfs [ edit | delete | rename ]
[FILE] mklost+found [ edit | delete | rename ]
[FILE] mkntfs [ edit | delete | rename ]
[FILE] mkswap [ edit | delete | rename ]
[FILE] ModemManager [ edit | delete | rename ]
[FILE] modinfo [ edit | delete | rename ]
[FILE] modprobe [ edit | delete | rename ]
[FILE] mount.fuse [ edit | delete | rename ]
[FILE] mount.fuse3 [ edit | delete | rename ]
[FILE] mount.lowntfs-3g [ edit | delete | rename ]
[FILE] mount.ntfs [ edit | delete | rename ]
[FILE] mount.ntfs-3g [ edit | delete | rename ]
[FILE] mountsnoop-bpfcc [ edit | delete | rename ]
[FILE] mpathpersist [ edit | delete | rename ]
[FILE] multipath [ edit | delete | rename ]
[FILE] multipathc [ edit | delete | rename ]
[FILE] multipathd [ edit | delete | rename ]
[FILE] mysqld [ edit | delete | rename ]
[FILE] mysqld_qslower-bpfcc [ edit | delete | rename ]
[FILE] naptime.bt [ edit | delete | rename ]
[FILE] needrestart [ edit | delete | rename ]
[FILE] netplan [ edit | delete | rename ]
[FILE] netqtop-bpfcc [ edit | delete | rename ]
[FILE] newusers [ edit | delete | rename ]
[FILE] nfnl_osf [ edit | delete | rename ]
[FILE] nfsdist-bpfcc [ edit | delete | rename ]
[FILE] nfsslower-bpfcc [ edit | delete | rename ]
[FILE] nft [ edit | delete | rename ]
[FILE] nginx [ edit | delete | rename ]
[FILE] nodegc-bpfcc [ edit | delete | rename ]
[FILE] nodestat-bpfcc [ edit | delete | rename ]
[FILE] nologin [ edit | delete | rename ]
[FILE] ntfsclone [ edit | delete | rename ]
[FILE] ntfscp [ edit | delete | rename ]
[FILE] ntfslabel [ edit | delete | rename ]
[FILE] ntfsresize [ edit | delete | rename ]
[FILE] ntfsundelete [ edit | delete | rename ]
[FILE] offcputime-bpfcc [ edit | delete | rename ]
[FILE] offwaketime-bpfcc [ edit | delete | rename ]
[FILE] on_ac_power [ edit | delete | rename ]
[FILE] oomkill-bpfcc [ edit | delete | rename ]
[FILE] oomkill.bt [ edit | delete | rename ]
[FILE] opendkim [ edit | delete | rename ]
[FILE] opendkim-atpszone [ edit | delete | rename ]
[FILE] opendkim-expire [ edit | delete | rename ]
[FILE] opendkim-gengraphs [ edit | delete | rename ]
[FILE] opendkim-genkey [ edit | delete | rename ]
[FILE] opendkim-genstats [ edit | delete | rename ]
[FILE] opendkim-genzone [ edit | delete | rename ]
[FILE] opendkim-importstats [ edit | delete | rename ]
[FILE] opendkim-stats [ edit | delete | rename ]
[FILE] opendkim-testkey [ edit | delete | rename ]
[FILE] opendkim-testmsg [ edit | delete | rename ]
[FILE] opensnoop-bpfcc [ edit | delete | rename ]
[FILE] opensnoop.bt [ edit | delete | rename ]
[FILE] overlayroot-chroot [ edit | delete | rename ]
[FILE] ownership [ edit | delete | rename ]
[FILE] pam-auth-update [ edit | delete | rename ]
[FILE] pam_extrausers_chkpwd [ edit | delete | rename ]
[FILE] pam_extrausers_update [ edit | delete | rename ]
[FILE] pam_getenv [ edit | delete | rename ]
[FILE] pam_namespace_helper [ edit | delete | rename ]
[FILE] pam_timestamp_check [ edit | delete | rename ]
[FILE] paperconfig [ edit | delete | rename ]
[FILE] parted [ edit | delete | rename ]
[FILE] partprobe [ edit | delete | rename ]
[FILE] pdata_tools [ edit | delete | rename ]
[FILE] perlcalls-bpfcc [ edit | delete | rename ]
[FILE] perlflow-bpfcc [ edit | delete | rename ]
[FILE] perlstat-bpfcc [ edit | delete | rename ]
[FILE] pg_updatedicts [ edit | delete | rename ]
[FILE] phpcalls-bpfcc [ edit | delete | rename ]
[FILE] phpdismod [ edit | delete | rename ]
[FILE] phpenmod [ edit | delete | rename ]
[FILE] phpflow-bpfcc [ edit | delete | rename ]
[FILE] phpquery [ edit | delete | rename ]
[FILE] phpstat-bpfcc [ edit | delete | rename ]
[FILE] pidpersec-bpfcc [ edit | delete | rename ]
[FILE] pidpersec.bt [ edit | delete | rename ]
[FILE] pivot_root [ edit | delete | rename ]
[FILE] plocate-build [ edit | delete | rename ]
[FILE] plymouthd [ edit | delete | rename ]
[FILE] postalias [ edit | delete | rename ]
[FILE] postcat [ edit | delete | rename ]
[FILE] postconf [ edit | delete | rename ]
[FILE] postdrop [ edit | delete | rename ]
[FILE] postfix [ edit | delete | rename ]
[FILE] postfix-add-filter [ edit | delete | rename ]
[FILE] postfix-add-policy [ edit | delete | rename ]
[FILE] postfix-collate [ edit | delete | rename ]
[FILE] postkick [ edit | delete | rename ]
[FILE] postlock [ edit | delete | rename ]
[FILE] postlog [ edit | delete | rename ]
[FILE] postmap [ edit | delete | rename ]
[FILE] postmulti [ edit | delete | rename ]
[FILE] postqueue [ edit | delete | rename ]
[FILE] postsuper [ edit | delete | rename ]
[FILE] posttls-finger [ edit | delete | rename ]
[FILE] poweroff [ edit | delete | rename ]
[FILE] ppchcalls-bpfcc [ edit | delete | rename ]
[FILE] profile-bpfcc [ edit | delete | rename ]
[FILE] pvchange [ edit | delete | rename ]
[FILE] pvck [ edit | delete | rename ]
[FILE] pvcreate [ edit | delete | rename ]
[FILE] pvdisplay [ edit | delete | rename ]
[FILE] pvmove [ edit | delete | rename ]
[FILE] pvremove [ edit | delete | rename ]
[FILE] pvresize [ edit | delete | rename ]
[FILE] pvs [ edit | delete | rename ]
[FILE] pvscan [ edit | delete | rename ]
[FILE] pwck [ edit | delete | rename ]
[FILE] pwconv [ edit | delete | rename ]
[FILE] pwhistory_helper [ edit | delete | rename ]
[FILE] pwunconv [ edit | delete | rename ]
[FILE] pythoncalls-bpfcc [ edit | delete | rename ]
[FILE] pythonflow-bpfcc [ edit | delete | rename ]
[FILE] pythongc-bpfcc [ edit | delete | rename ]
[FILE] pythonstat-bpfcc [ edit | delete | rename ]
[FILE] qemu-ga [ edit | delete | rename ]
[FILE] qmqp-sink [ edit | delete | rename ]
[FILE] qmqp-source [ edit | delete | rename ]
[FILE] qshape [ edit | delete | rename ]
[FILE] rdmaucma-bpfcc [ edit | delete | rename ]
[FILE] readahead-bpfcc [ edit | delete | rename ]
[FILE] readprofile [ edit | delete | rename ]
[FILE] reboot [ edit | delete | rename ]
[FILE] remove-shell [ edit | delete | rename ]
[FILE] reset-trace-bpfcc [ edit | delete | rename ]
[FILE] resize2fs [ edit | delete | rename ]
[FILE] resolvconf [ edit | delete | rename ]
[FILE] rmail [ edit | delete | rename ]
[FILE] rmmod [ edit | delete | rename ]
[FILE] rmt [ edit | delete | rename ]
[FILE] rmt-tar [ edit | delete | rename ]
[FILE] rsyslogd [ edit | delete | rename ]
[FILE] rtacct [ edit | delete | rename ]
[FILE] rtcwake [ edit | delete | rename ]
[FILE] rtmon [ edit | delete | rename ]
[FILE] rubycalls-bpfcc [ edit | delete | rename ]
[FILE] rubyflow-bpfcc [ edit | delete | rename ]
[FILE] rubygc-bpfcc [ edit | delete | rename ]
[FILE] rubyobjnew-bpfcc [ edit | delete | rename ]
[FILE] rubystat-bpfcc [ edit | delete | rename ]
[FILE] runlevel [ edit | delete | rename ]
[FILE] runqlat-bpfcc [ edit | delete | rename ]
[FILE] runqlat.bt [ edit | delete | rename ]
[FILE] runqlen-bpfcc [ edit | delete | rename ]
[FILE] runqlen.bt [ edit | delete | rename ]
[FILE] runqslower-bpfcc [ edit | delete | rename ]
[FILE] runuser [ edit | delete | rename ]
[FILE] sendmail [ edit | delete | rename ]
[FILE] service [ edit | delete | rename ]
[FILE] setcap [ edit | delete | rename ]
[FILE] setuids.bt [ edit | delete | rename ]
[FILE] setvesablank [ edit | delete | rename ]
[FILE] setvtrgb [ edit | delete | rename ]
[FILE] sfdisk [ edit | delete | rename ]
[FILE] sgdisk [ edit | delete | rename ]
[FILE] shadowconfig [ edit | delete | rename ]
[FILE] shmsnoop-bpfcc [ edit | delete | rename ]
[FILE] shutdown [ edit | delete | rename ]
[FILE] slabratetop-bpfcc [ edit | delete | rename ]
[FILE] smtp-sink [ edit | delete | rename ]
[FILE] smtp-source [ edit | delete | rename ]
[FILE] sofdsnoop-bpfcc [ edit | delete | rename ]
[FILE] softirqs-bpfcc [ edit | delete | rename ]
[FILE] solisten-bpfcc [ edit | delete | rename ]
[FILE] split-logfile [ edit | delete | rename ]
[FILE] sshd [ edit | delete | rename ]
[FILE] ssllatency.bt [ edit | delete | rename ]
[FILE] sslsniff-bpfcc [ edit | delete | rename ]
[FILE] sslsnoop.bt [ edit | delete | rename ]
[FILE] stackcount-bpfcc [ edit | delete | rename ]
[FILE] start-stop-daemon [ edit | delete | rename ]
[FILE] statsnoop-bpfcc [ edit | delete | rename ]
[FILE] statsnoop.bt [ edit | delete | rename ]
[FILE] sudo_logsrvd [ edit | delete | rename ]
[FILE] sudo_sendlog [ edit | delete | rename ]
[FILE] sulogin [ edit | delete | rename ]
[FILE] swapin.bt [ edit | delete | rename ]
[FILE] swaplabel [ edit | delete | rename ]
[FILE] swapoff [ edit | delete | rename ]
[FILE] swapon [ edit | delete | rename ]
[FILE] switch_root [ edit | delete | rename ]
[FILE] syncsnoop-bpfcc [ edit | delete | rename ]
[FILE] syncsnoop.bt [ edit | delete | rename ]
[FILE] syscount-bpfcc [ edit | delete | rename ]
[FILE] syscount.bt [ edit | delete | rename ]
[FILE] sysctl [ edit | delete | rename ]
[FILE] tarcat [ edit | delete | rename ]
[FILE] tc [ edit | delete | rename ]
[FILE] tclcalls-bpfcc [ edit | delete | rename ]
[FILE] tclflow-bpfcc [ edit | delete | rename ]
[FILE] tclobjnew-bpfcc [ edit | delete | rename ]
[FILE] tclstat-bpfcc [ edit | delete | rename ]
[FILE] tcpaccept-bpfcc [ edit | delete | rename ]
[FILE] tcpaccept.bt [ edit | delete | rename ]
[FILE] tcpcong-bpfcc [ edit | delete | rename ]
[FILE] tcpconnect-bpfcc [ edit | delete | rename ]
[FILE] tcpconnect.bt [ edit | delete | rename ]
[FILE] tcpconnlat-bpfcc [ edit | delete | rename ]
[FILE] tcpdrop-bpfcc [ edit | delete | rename ]
[FILE] tcpdrop.bt [ edit | delete | rename ]
[FILE] tcplife-bpfcc [ edit | delete | rename ]
[FILE] tcplife.bt [ edit | delete | rename ]
[FILE] tcpretrans-bpfcc [ edit | delete | rename ]
[FILE] tcpretrans.bt [ edit | delete | rename ]
[FILE] tcprtt-bpfcc [ edit | delete | rename ]
[FILE] tcpstates-bpfcc [ edit | delete | rename ]
[FILE] tcpsubnet-bpfcc [ edit | delete | rename ]
[FILE] tcpsynbl-bpfcc [ edit | delete | rename ]
[FILE] tcpsynbl.bt [ edit | delete | rename ]
[FILE] tcptop-bpfcc [ edit | delete | rename ]
[FILE] tcptracer-bpfcc [ edit | delete | rename ]
[FILE] telinit [ edit | delete | rename ]
[FILE] thin_check [ edit | delete | rename ]
[FILE] thin_delta [ edit | delete | rename ]
[FILE] thin_dump [ edit | delete | rename ]
[FILE] thin_ls [ edit | delete | rename ]
[FILE] thin_metadata_size [ edit | delete | rename ]
[FILE] thin_repair [ edit | delete | rename ]
[FILE] thin_restore [ edit | delete | rename ]
[FILE] thin_rmap [ edit | delete | rename ]
[FILE] thin_trim [ edit | delete | rename ]
[FILE] threadsnoop-bpfcc [ edit | delete | rename ]
[FILE] threadsnoop.bt [ edit | delete | rename ]
[FILE] tipc [ edit | delete | rename ]
[FILE] tplist-bpfcc [ edit | delete | rename ]
[FILE] trace-bpfcc [ edit | delete | rename ]
[FILE] ttysnoop-bpfcc [ edit | delete | rename ]
[FILE] tune2fs [ edit | delete | rename ]
[FILE] ucalls [ edit | delete | rename ]
[FILE] uflow [ edit | delete | rename ]
[FILE] ufw [ edit | delete | rename ]
[FILE] ugc [ edit | delete | rename ]
[FILE] umount.udisks2 [ edit | delete | rename ]
[FILE] undump.bt [ edit | delete | rename ]
[FILE] unix_chkpwd [ edit | delete | rename ]
[FILE] unix_update [ edit | delete | rename ]
[FILE] uobjnew [ edit | delete | rename ]
[FILE] update-ca-certificates [ edit | delete | rename ]
[FILE] update-catalog [ edit | delete | rename ]
[FILE] update-fonts-alias [ edit | delete | rename ]
[FILE] update-fonts-dir [ edit | delete | rename ]
[FILE] update-fonts-scale [ edit | delete | rename ]
[FILE] update-grub [ edit | delete | rename ]
[FILE] update-grub-gfxpayload [ edit | delete | rename ]
[FILE] update-grub2 [ edit | delete | rename ]
[FILE] update-gsfontmap [ edit | delete | rename ]
[FILE] update-icon-caches [ edit | delete | rename ]
[FILE] update-ieee-data [ edit | delete | rename ]
[FILE] update-info-dir [ edit | delete | rename ]
[FILE] update-initramfs [ edit | delete | rename ]
[FILE] update-locale [ edit | delete | rename ]
[FILE] update-mime [ edit | delete | rename ]
[FILE] update-passwd [ edit | delete | rename ]
[FILE] update-pciids [ edit | delete | rename ]
[FILE] update-rc.d [ edit | delete | rename ]
[FILE] update-secureboot-policy [ edit | delete | rename ]
[FILE] update-shells [ edit | delete | rename ]
[FILE] update-xmlcatalog [ edit | delete | rename ]
[FILE] updatedb.plocate [ edit | delete | rename ]
[FILE] upgrade-from-grub-legacy [ edit | delete | rename ]
[FILE] usb_modeswitch [ edit | delete | rename ]
[FILE] usb_modeswitch_dispatcher [ edit | delete | rename ]
[FILE] useradd [ edit | delete | rename ]
[FILE] userdel [ edit | delete | rename ]
[FILE] usermod [ edit | delete | rename ]
[FILE] ustat [ edit | delete | rename ]
[FILE] uthreads [ edit | delete | rename ]
[FILE] uuidd [ edit | delete | rename ]
[FILE] validlocale [ edit | delete | rename ]
[FILE] vcstime [ edit | delete | rename ]
[FILE] vdpa [ edit | delete | rename ]
[FILE] veritysetup [ edit | delete | rename ]
[FILE] vfscount-bpfcc [ edit | delete | rename ]
[FILE] vfscount.bt [ edit | delete | rename ]
[FILE] vfsstat-bpfcc [ edit | delete | rename ]
[FILE] vfsstat.bt [ edit | delete | rename ]
[FILE] vgcfgbackup [ edit | delete | rename ]
[FILE] vgcfgrestore [ edit | delete | rename ]
[FILE] vgchange [ edit | delete | rename ]
[FILE] vgck [ edit | delete | rename ]
[FILE] vgconvert [ edit | delete | rename ]
[FILE] vgcreate [ edit | delete | rename ]
[FILE] vgdisplay [ edit | delete | rename ]
[FILE] vgexport [ edit | delete | rename ]
[FILE] vgextend [ edit | delete | rename ]
[FILE] vgimport [ edit | delete | rename ]
[FILE] vgimportclone [ edit | delete | rename ]
[FILE] vgmerge [ edit | delete | rename ]
[FILE] vgmknodes [ edit | delete | rename ]
[FILE] vgreduce [ edit | delete | rename ]
[FILE] vgremove [ edit | delete | rename ]
[FILE] vgrename [ edit | delete | rename ]
[FILE] vgs [ edit | delete | rename ]
[FILE] vgscan [ edit | delete | rename ]
[FILE] vgsplit [ edit | delete | rename ]
[FILE] vigr [ edit | delete | rename ]
[FILE] vipw [ edit | delete | rename ]
[FILE] virtiostat-bpfcc [ edit | delete | rename ]
[FILE] visudo [ edit | delete | rename ]
[FILE] vpddecode [ edit | delete | rename ]
[FILE] wakeuptime-bpfcc [ edit | delete | rename ]
[FILE] wipefs [ edit | delete | rename ]
[FILE] writeback.bt [ edit | delete | rename ]
[FILE] xfsdist-bpfcc [ edit | delete | rename ]
[FILE] xfsdist.bt [ edit | delete | rename ]
[FILE] xfsslower-bpfcc [ edit | delete | rename ]
[FILE] xfs_admin [ edit | delete | rename ]
[FILE] xfs_bmap [ edit | delete | rename ]
[FILE] xfs_copy [ edit | delete | rename ]
[FILE] xfs_db [ edit | delete | rename ]
[FILE] xfs_estimate [ edit | delete | rename ]
[FILE] xfs_freeze [ edit | delete | rename ]
[FILE] xfs_fsr [ edit | delete | rename ]
[FILE] xfs_growfs [ edit | delete | rename ]
[FILE] xfs_info [ edit | delete | rename ]
[FILE] xfs_io [ edit | delete | rename ]
[FILE] xfs_logprint [ edit | delete | rename ]
[FILE] xfs_mdrestore [ edit | delete | rename ]
[FILE] xfs_metadump [ edit | delete | rename ]
[FILE] xfs_mkfile [ edit | delete | rename ]
[FILE] xfs_ncheck [ edit | delete | rename ]
[FILE] xfs_quota [ edit | delete | rename ]
[FILE] xfs_repair [ edit | delete | rename ]
[FILE] xfs_rtcp [ edit | delete | rename ]
[FILE] xfs_scrub [ edit | delete | rename ]
[FILE] xfs_scrub_all [ edit | delete | rename ]
[FILE] xfs_spaceman [ edit | delete | rename ]
[FILE] xtables-legacy-multi [ edit | delete | rename ]
[FILE] xtables-monitor [ edit | delete | rename ]
[FILE] xtables-nft-multi [ edit | delete | rename ]
[FILE] zerofree [ edit | delete | rename ]
[FILE] zfsdist-bpfcc [ edit | delete | rename ]
[FILE] zfsslower-bpfcc [ edit | delete | rename ]
[FILE] zic [ edit | delete | rename ]
[FILE] zramctl [ edit | delete | rename ]
Viewing: /usr/sbin/a2enmod
#!/usr/bin/perl -w
#
# a2enmod by Stefan Fritsch <sf@debian.org>
# Licensed under Apache License 2.0
#
# The coding style is "perltidy -pbp"
use strict;
use Cwd 'realpath';
use File::Spec;
use File::Basename;
use File::Path;
use Getopt::Long;
use 5.014;
no if $] >= 5.017011, warnings => 'experimental::smartmatch';
my $quiet;
my $force;
my $maintmode;
my $purge;
Getopt::Long::Configure('bundling');
GetOptions(
'quiet|q' => \$quiet,
'force|f' => \$force,
'maintmode|m' => \$maintmode,
'purge|p' => \$purge
) or exit 2;
my $basename = basename($0);
$basename =~ /^a2(en|dis)(mod|site|conf)((?:-.+)?)$/
or die "$basename call name unknown\n";
my $act = $1;
my $obj = $2;
my $dir_suffix = $3;
my @essential_module_list = qw(alias auth_basic authn_file authz_host
authz_user autoindex deflate dir env filter logio mime negotiation
setenvif unixd version watchdog);
my $env_file = $ENV{APACHE_ENVVARS};
if ( !$env_file ) {
if ( $ENV{APACHE_CONFDIR} ) {
$env_file = "$ENV{APACHE_CONFDIR}/envvars";
}
else {
$env_file = "/etc/apache2$dir_suffix/envvars";
}
}
$ENV{LANG} = 'C';
read_env_file($env_file);
$act .= 'able';
my ( $name, $dir, $sffx, $reload );
if ( $obj eq 'mod' ) {
$obj = 'module';
$dir = 'mods';
$sffx = '.load';
$reload = 'restart';
}
elsif ( $obj eq 'conf' ) {
$obj = 'conf';
$dir = 'conf';
$sffx = '.conf';
$reload = 'reload';
}
else {
$dir = 'sites';
$sffx = '.conf';
$reload = 'reload';
}
$name = ucfirst($obj);
my $confdir = $ENV{APACHE_CONFDIR} || "/etc/apache2$dir_suffix";
my $availdir = $ENV{ uc("APACHE_${dir}_AVAILABLE") }
|| "$confdir/$dir-available";
my $enabldir = $ENV{ uc("APACHE_${dir}_ENABLED") } || "$confdir/$dir-enabled";
my $statedir = $ENV{ uc("APACHE_STATE_DIRECTORY") } || "/var/lib/apache2";
$statedir .= "/$obj";
my $choicedir = $act eq 'enable' ? $availdir : $enabldir;
my $linkdir = File::Spec->abs2rel( $availdir, $enabldir );
my $request_reload = 0;
my $request_htcacheclean;
my $htc = "apache-htcacheclean$dir_suffix";
my $htc_service = "apache-htcacheclean"; # Service name for systemd
my $apache_service = "apache2";
if ( defined($dir_suffix) and $dir_suffix ne '' ) {
# Uses '@instance.service' suffix instead of '-instance' suffix
my $service_suffix = '@' . substr( $dir_suffix, 1 ) . '.service';
$htc_service .= $service_suffix;
$apache_service .= $service_suffix;
}
my $rc = 0;
if ( !scalar @ARGV ) {
my @choices = myglob('*');
print "Your choices are: @choices\n";
print "Which ${obj}(s) do you want to $act (wildcards ok)?\n";
my $input = <>;
@ARGV = split /\s+/, $input;
}
my @objs;
foreach my $arg (@ARGV) {
$arg =~ s/${sffx}$//;
my @glob = myglob($arg);
if ( !@glob ) {
error("No $obj found matching $arg!\n");
$rc = 1;
}
else {
push @objs, @glob;
}
}
foreach my $acton (@objs) {
doit($acton) or $rc = 1;
}
my $htcstart = "";
my $apache_reload = "";
my $cmd = ( $act eq "enable" ) ? "start" : "stop";
if ( is_systemd() ) {
$htcstart = " systemctl $cmd $htc_service\n";
$apache_reload = " systemctl $reload $apache_service\n";
}
else {
$htcstart = " service $htc $cmd\n";
$apache_reload = " service apache2$dir_suffix $reload\n";
}
info( "To activate the new configuration, you need to run:\n"
. $apache_reload
. ( $request_htcacheclean ? $htcstart : "" ) )
if $request_reload;
exit($rc);
##############################################################################
sub myglob {
my $arg = shift;
my @glob = map {
s{^$choicedir/}{};
s{$sffx$}{};
$_
} glob("$choicedir/$arg$sffx");
return @glob;
}
sub doit {
my $acton = shift;
my ( $conftgt, $conflink );
if ( $obj eq 'module' ) {
if ( $act eq 'enable' && $acton eq 'cgi' && threaded() ) {
print
"Your MPM seems to be threaded. Selecting cgid instead of cgi.\n";
$acton = 'cgid';
}
$conftgt = "$availdir/$acton.conf";
if ( -e $conftgt ) {
$conflink = "$enabldir/$acton.conf";
}
}
my $tgt = "$availdir/$acton$sffx";
my $link = "$enabldir/$acton$sffx";
if ( !-e $tgt ) {
if ( -l $link && !-e $link ) {
if ( $act eq 'disable' ) {
info("removing dangling symlink $link\n");
unlink($link);
# force a .conf path. It may exist as dangling link, too
$conflink = "$enabldir/$acton.conf";
if ( -l $conflink && !-e $conflink ) {
info("removing dangling symlink $conflink\n");
unlink($conflink);
}
return 1;
}
else {
error("$link is a dangling symlink!\n");
}
}
if ($purge) {
switch_marker( $obj, $act, $acton );
# exit silently, we are purging anyway
return 1;
}
error("$name $acton does not exist!\n");
return 0;
}
# handle module dependencies
if ( $obj eq 'module' ) {
if ( $act eq 'enable' ) {
my @depends = get_deps("$availdir/$acton.load");
do_deps( $acton, @depends ) or return 0;
my @conflicts = get_deps( "$availdir/$acton.load", "Conflicts" );
check_conflicts( $acton, @conflicts ) or return 0;
}
else {
my @depending;
foreach my $d ( glob("$enabldir/*.load") ) {
my @deps = get_deps($d);
if ( is_in( $acton, @deps ) ) {
$d =~ m,/([^/]+).load$,;
push @depending, $1;
}
}
if ( scalar @depending ) {
if ($force) {
do_deps( $acton, @depending ) or return 0;
}
else {
error(
"The following modules depend on $acton ",
"and need to be disabled first: @depending\n"
);
return 0;
}
}
}
}
elsif ( $act eq 'enable' ) {
my @depends = get_deps("$availdir/$acton$sffx");
warn_deps( $acton, @depends ) or return 0;
}
if ( $act eq 'enable' ) {
my $check = check_link( $tgt, $link );
if ( $check eq 'ok' ) {
if ($conflink) {
# handle .conf file
my $confcheck = check_link( $conftgt, $conflink );
if ( $confcheck eq 'ok' ) {
info("$name $acton already enabled\n");
return 1;
}
elsif ( $confcheck eq 'missing' ) {
print "Enabling config file $acton.conf.\n";
add_link( $conftgt, $conflink ) or return 0;
}
else {
error(
"Config file $acton.conf not properly enabled: $confcheck\n"
);
return 0;
}
}
else {
info("$name $acton already enabled\n");
return 1;
}
}
elsif ( $check eq 'missing' ) {
if ($conflink) {
# handle .conf file
my $confcheck = check_link( $conftgt, $conflink );
if ( $confcheck eq 'missing' ) {
add_link( $conftgt, $conflink ) or return 0;
}
elsif ( $confcheck ne 'ok' ) {
error(
"Config file $acton.conf not properly enabled: $confcheck\n"
);
return 0;
}
}
print "Enabling $obj $acton.\n";
special_module_handling($acton);
return add_link( $tgt, $link )
&& switch_marker( $obj, $act, $acton );
}
else {
error("$name $acton not properly enabled: $check\n");
return 0;
}
}
else {
if ( -e $link || -l $link ) {
special_module_handling($acton);
if ( $obj eq 'module' && grep { $_ eq $acton }
@essential_module_list )
{
$force || essential_module_handling($acton);
}
remove_link($link);
if ( $conflink && -e $conflink ) {
remove_link($conflink);
}
switch_marker( $obj, $act, $acton );
print "$name $acton disabled.\n";
}
elsif ( $conflink && -e $conflink ) {
print "Disabling stale config file $acton.conf.\n";
remove_link($conflink);
}
else {
info("$name $acton already disabled\n");
if ($purge) {
switch_marker( $obj, $act, $acton );
}
return 1;
}
}
return 1;
}
sub get_deps {
my $file = shift;
my $type = shift || "Depends";
my $fd;
if ( !open( $fd, '<', $file ) ) {
error("Can't open $file: $!");
return;
}
my $line;
while ( defined( $line = <$fd> ) ) {
chomp $line;
if ( $line =~ /^# $type:\s+(.*?)\s*$/ ) {
my $deps = $1;
return split( /[\n\s]+/, $deps );
}
# only check until the first non-empty non-comment line
last if ( $line !~ /^\s*(?:#.*)?$/ );
}
return;
}
sub do_deps {
my $acton = shift;
foreach my $d (@_) {
info("Considering dependency $d for $acton:\n");
if ( !doit($d) ) {
error("Could not $act dependency $d for $acton, aborting\n");
return 0;
}
}
return 1;
}
sub warn_deps {
my $acton = shift;
my $modsenabldir = $ENV{APACHE_MODS_ENABLED} || "$confdir/mods-enabled";
foreach my $d (@_) {
info("Checking dependency $d for $acton:\n");
if ( !-e "$modsenabldir/$d.load" ) {
warning(
"Module $d is not enabled, but $acton depends on it, aborting\n"
);
return 0;
}
}
return 1;
}
sub check_conflicts {
my $acton = shift;
my $haderror = 0;
foreach my $d (@_) {
info("Considering conflict $d for $acton:\n");
my $tgt = "$availdir/$d$sffx";
my $link = "$enabldir/$d$sffx";
my $confcheck = check_link( $tgt, $link );
if ( $confcheck eq 'ok' ) {
error(
"Module $d is enabled - cannot proceed due to conflicts. It needs to be disabled first!\n"
);
# Don't return immediately, there could be several conflicts
$haderror++;
}
}
if ($haderror) {
return 0;
}
return 1;
}
sub add_link {
my ( $tgt, $link ) = @_;
# create relative link
if ( !symlink( File::Spec->abs2rel( $tgt, dirname($link) ), $link ) ) {
die("Could not create $link: $!\n");
}
$request_reload = 1;
return 1;
}
sub check_link {
my ( $tgt, $link ) = @_;
if ( !-e $link ) {
if ( -l $link ) {
# points to nowhere
info("Removing dangling link $link");
unlink($link) or die "Could not remove $link\n";
}
return 'missing';
}
if ( -e $link && !-l $link ) {
return "$link is a real file, not touching it";
}
if ( realpath($link) ne realpath($tgt) ) {
return "$link exists but does not point to $tgt, not touching it";
}
return 'ok';
}
sub remove_link {
my ($link) = @_;
if ( -l $link ) {
unlink($link) or die "Could not remove $link: $!\n";
}
elsif ( -e $link ) {
error("$link is not a symbolic link, not deleting\n");
return 0;
}
$request_reload = 1;
return 1;
}
sub threaded {
my $result = "";
$result = qx{/usr/sbin/apache2ctl -V | grep 'threaded'}
if -x '/usr/sbin/apache2ctl';
if ( $? != 0 ) {
# config doesn't work
if ( -e "$enabldir/mpm_prefork.load" ) {
return 0;
}
elsif (-e "$enabldir/mpm_worker.load"
|| -e "$enabldir/mpm_event.load" )
{
return 1;
}
else {
error("Can't determine enabled MPM");
# do what user requested
return 0;
}
}
if ( $result =~ / no/ ) {
return 0;
}
elsif ( $result =~ / yes/ ) {
return 1;
}
else {
die("Can't parse output from apache2ctl -V:\n$result\n");
}
}
sub info {
print @_ if !$quiet;
}
sub error {
print STDERR 'ERROR: ', @_;
}
sub warning {
print STDERR 'WARNING: ', @_;
}
sub is_in {
my $needle = shift;
foreach my $e (@_) {
return 1 if $needle eq $e;
}
return 0;
}
sub read_env_file {
my $file = shift;
-r $file or return;
my @lines = qx{env - sh -c '. $file && env'};
if ($?) {
die "Could not read $file\n";
}
foreach my $l (@lines) {
chomp $l;
$l =~ /^(.*)?=(.*)$/ or die "Could not parse $file\n";
$ENV{$1} = $2;
}
}
sub switch_marker {
die('usage: switch_marker([module|site|conf], [enable|disable], $name)')
if @_ != 3;
my $which = shift;
my $what = shift;
my $name = shift;
my $mode = "admin";
$mode = "maint" if $maintmode;
#print("switch_marker $which $what $name\n");
# TODO: get rid of the magic string(s)
my $state_marker_dir = "$statedir/$what" . "d" . "_by_$mode";
my $state_marker = "$state_marker_dir/$name";
if ( !-d $state_marker_dir ) {
File::Path::mkpath("$state_marker_dir")
|| error("Failed to create marker directory: '$state_marker_dir'\n");
}
# XXX: swap find with perl alternative
my @markers = qx{find "$statedir" -type f -a -name "$name"};
chomp(@markers);
foreach (@markers) {
unless ( unlink $_ ) {
error("Failed to remove old marker '$_'!\n") && return 0;
}
}
unless ($purge) {
qx{touch "$state_marker"};
if ( $? != 0 ) {
error("Failed to create marker '$state_marker'!\n") && return 0;
}
return 1;
}
}
sub essential_module_handling {
my $module = shift;
print "WARNING: The following essential module will be disabled.\n";
print "This might result in unexpected behavior and should NOT be done\n";
print "unless you know exactly what you are doing!\n $module\n\n";
print
"To continue type in the phrase 'Yes, do as I say!' or retry by passing '-f': ";
my $input = <STDIN>;
chomp($input);
if ( $input ne 'Yes, do as I say!' ) {
print("Aborting\n");
exit(1);
}
}
sub special_module_handling {
my $acton = shift;
if ( $obj ne 'module' ) {
return;
}
if ( $acton eq 'ssl' ) {
if ( $act eq 'enable' ) {
info( "See /usr/share/doc/apache2/README.Debian.gz on "
. "how to configure SSL and create self-signed "
. "certificates.\n" );
}
}
elsif ( $acton eq 'cache_disk' ) {
$request_htcacheclean = 1;
my $verb = "\u$act";
my $command;
$verb =~ s/e$/ing/;
if ( -d "/run/systemd" and -x "/bin/systemctl" ) {
info("$verb external service $htc_service\n");
$command = "systemctl $act $htc_service";
}
else {
info("$verb external service $htc\n");
$command = "update-rc.d $htc $act";
}
my $res = system($command);
if ( $res == 0 ) {
info("The service will be started on next reboot.\n")
if $act eq 'enable';
}
else {
warning("'$command' failed\n");
}
}
}
sub is_systemd {
my $init = readlink("/proc/1/exe") || "";
return scalar $init =~ /systemd/;
}