PATH:
usr
/
bin
#!/usr/bin/sh # Copyright (C) 2011 Canonical Ltd. # Copyright (C) 2013 Hewlett-Packard Development Company, L.P. # # Authors: Scott Moser <smoser@canonical.com> # Juerg Haefliger <juerg.haefliger@hp.com> # # 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, version 3 of the License. # # 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, see <http://www.gnu.org/licenses/>. # the fudge factor. if within this many bytes dont bother FUDGE=${GROWPART_FUDGE:-$((1024*1024))} TEMP_D="" RESTORE_FUNC="" RESTORE_HUMAN="" VERBOSITY=0 DISK="" PART="" PT_UPDATE=false DRY_RUN=0 FLOCK_DISK_FD="" RESIZE_RESULT="" SFDISK_VERSION="" SFDISK_2_26="22600" SFDISK_V_WORKING_GPT="22603" MBR_BACKUP="" GPT_BACKUP="" _capture="" error() { echo "$@" 1>&2 } fail() { [ $# -eq 0 ] || echo "FAILED:" "$@" exit 2 } nochange() { RESIZE_RESULT="NOCHANGE" echo "NOCHANGE:" "$@" return 1 } changed() { RESIZE_RESULT="CHANGED" echo "CHANGED:" "$@" return 0 } change() { RESIZE_RESULT="CHANGE" echo "CHANGE:" "$@" return 0 } cleanup() { if [ -n "${RESTORE_FUNC}" ]; then error "***** WARNING: Resize failed, attempting to revert ******" if ${RESTORE_FUNC} ; then error "***** Restore appears to have gone OK ****" else error "***** Restore FAILED! ******" if [ -n "${RESTORE_HUMAN}" -a -f "${RESTORE_HUMAN}" ]; then error "**** original table looked like: ****" cat "${RESTORE_HUMAN}" 1>&2 else error "We seem to have not saved the partition table!" fi fi unlock_disk_and_settle $DISK fi [ -z "${TEMP_D}" -o ! -d "${TEMP_D}" ] || rm -Rf "${TEMP_D}" } debug() { local level=${1} shift [ "${level}" -gt "${VERBOSITY}" ] && return if [ "${DEBUG_LOG}" ]; then echo "$@" >>"${DEBUG_LOG}" else error "$@" fi } debugcat() { local level="$1" shift; [ "${level}" -gt "$VERBOSITY" ] && return if [ "${DEBUG_LOG}" ]; then cat "$@" >>"${DEBUG_LOG}" else cat "$@" 1>&2 fi } mktemp_d() { # just a mktemp -d that doens't need mktemp if its not there. _RET=$(mktemp -d "${TMPDIR:-/tmp}/${0##*/}.XXXXXX" 2>/dev/null) && return _RET=$(umask 077 && t="${TMPDIR:-/tmp}/${0##*/}.$$" && mkdir "${t}" && echo "${t}") return } Usage() { cat <<EOF ${0##*/} disk partition rewrite partition table so that partition takes up all the space it can options: -h | --help print Usage and exit --free-percent F resize so that specified percentage F of the disk is not used in total (not just by this partition). This is useful for consumer SSD or SD cards where a small percentage unallocated can improve device lifetime. --fudge F if part could be resized, but change would be less than 'F' bytes, do not resize (default: ${FUDGE}) -N | --dry-run only report what would be done, show new 'sfdisk -d' -v | --verbose increase verbosity / debug -u | --update R update the the kernel partition table info after growing this requires kernel support and 'partx --update' R is one of: - 'auto' : [default] update partition if possible - 'force' : try despite sanity checks (fail on failure) - 'off' : do not attempt - 'on' : fail if sanity checks indicate no support Example: - ${0##*/} /dev/sda 1 Resize partition 1 on /dev/sda - ${0##*/} --free-percent=10 /dev/sda 1 Resize partition 1 on /dev/sda so that 10% of the disk is unallocated EOF } bad_Usage() { Usage 1>&2 error "$@" exit 2 } lock_disk() { local disk="$1" # flock the target disk to protect against udev actions while modifying. # https://systemd.io/BLOCK_DEVICE_LOCKING/ [ "${DRY_RUN}" = 0 ] || return # only lock block devices, files do not need a lock [ -b "${disk}" ] || return # The FD values are hard-coded per /bin/sh requirement for using exec # to open paths with specific fd values; man (1) sh on "Redirections" FLOCK_DISK_FD=9 debug 1 "FLOCK: try exec open fd 9, on failure exec exits this program" exec 9<>$disk # Do not use --nonblock or --timeout as udev may be already processing # the disk and we must wait until it has released the disk to # proceed. Failure to obtain exclusive lock is fatal to growpart. rq flock flock -x $FLOCK_DISK_FD || fail "Error while obtaining exclusive lock on $DISK" debug 1 "FLOCK: $disk: obtained exclusive lock" } unlock_disk_and_settle() { # unlock_disk(disk, settle) local disk="$1" local settle=${2-"1"} # release the lock on a disk if locked. When a disk is locked, # FLOCK_DISK_FD is set to the hard-coded value of 9. # After unlocking run udevadm settle (if installed) as the disk has # likely been changed. [ "${DRY_RUN}" = 0 ] || return [ -n "${FLOCK_DISK_FD}" ] || return debug 1 "FLOCK: ${disk}: releasing exclusive lock" exec 9>&- [ "${settle}" = 1 ] && has_cmd udevadm && udevadm settle FLOCK_DISK_FD="" } sfdisk_restore_legacy() { sfdisk --no-reread "${DISK}" -I "${MBR_BACKUP}" } sfdisk_restore() { # files are named: sfdisk-<device>-<offset>.bak local f="" offset="" fails=0 for f in "${MBR_BACKUP}"*.bak; do [ -f "$f" ] || continue offset=${f##*-} offset=${offset%.bak} [ "$offset" = "$f" ] && { error "WARN: confused by file $f"; continue; } dd "if=$f" "of=${DISK}" seek=$(($offset)) bs=1 conv=notrunc || { error "WARN: failed restore from $f"; fails=$(($fails+1)); } done return $fails } sfdisk_worked_but_blkrrpart_failed() { local ret="$1" output="$2" # exit code found was just 1, but dont insist on that #[ $ret -eq 1 ] || return 1 # Successfully wrote the new partition table if grep -qi "Success.* wrote.* new.* partition" "$output"; then grep -qi "BLKRRPART: Device or resource busy" "$output" return # The partition table has been altered. elif grep -qi "The.* part.* table.* has.* been.* altered" "$output"; then # Re-reading the partition table failed grep -qi "Re-reading.* partition.* table.* failed" "$output" return fi return $ret } get_sfdisk_version() { # set SFDISK_VERSION to MAJOR*10000+MINOR*100+MICRO local out oifs="$IFS" ver="" [ -n "$SFDISK_VERSION" ] && return 0 [ -n "$SFDISK" ] || { SFDISK_VERSION=0 return 0 } # expected output: sfdisk from util-linux 2.25.2 out=$(LANG=C sfdisk --version) || { error "failed to get sfdisk version"; return 1; } set -- $out ver=$4 case "$ver" in [0-9]*.[0-9]*.[0-9]|[0-9].[0-9]*) IFS="."; set -- $ver; IFS="$oifs" SFDISK_VERSION=$(($1*10000+$2*100+${3:-0})) return 0;; *) error "unexpected output in sfdisk --version [$out]" return 1;; esac } get_diskpart_path() { # get_diskpart_path(disk, part_number) # return the path to the partition device on disk # # Convert inputs disk and part into a path to a partition device path # handle both block devices or files. # e.g. get_diskpart_path /dev/loop0 7 returns /dev/loop0p7 local disk="$1" local part="$2" local dpart="" dpart="${disk}${part}" # disk and partition number if [ -b "$disk" ]; then if [ -b "${disk}p${part}" -a "${disk%[0-9]}" != "${disk}" ]; then # for block devices that end in a number (/dev/nbd0) # the partition is "<name>p<partition_number>" (/dev/nbd0p1) dpart="${disk}p${part}" elif [ "${disk#/dev/loop[0-9]}" != "${disk}" ]; then # for /dev/loop devices, sfdisk output will be <name>p<number> # format also, even though there is not a device there. dpart="${disk}p${part}" fi else case "$disk" in # sfdisk for files ending in digit to <disk>p<num>. *[0-9]) dpart="${disk}p${part}";; esac fi _RET="$dpart" } resize_sfdisk() { local humanpt="${TEMP_D}/recovery" local mbr_backup="${TEMP_D}/orig.save" local restore_func="" local format="$1" local change_out=${TEMP_D}/change.out local dump_out=${TEMP_D}/dump.out local new_out=${TEMP_D}/new.out local dump_mod=${TEMP_D}/dump.mod local tmp="${TEMP_D}/tmp.out" local err="${TEMP_D}/err.out" local mbr_max_512="4294967296" local pt_start pt_size pt_end max_end new_size change_info dpart local sector_num sector_size disk_size tot out local excess_sectors free_percent_sectors remaining_free_sectors LANG=C rqe sfd_list sfdisk --list --unit=S "$DISK" >"$tmp" || fail "failed: sfdisk --list $DISK" if [ "${SFDISK_VERSION}" -lt ${SFDISK_2_26} ]; then # exected output contains: Units: sectors of 512 bytes, ... out=$(awk '$1 == "Units:" && $5 ~ /bytes/ { print $4 }' "$tmp") || fail "failed to read sfdisk output" if [ -z "$out" ]; then error "WARN: sector size not found in sfdisk output, assuming 512" sector_size=512 else sector_size="$out" fi local _w _cyl _w1 _heads _w2 sectors _w3 t s # show-size is in units of 1024 bytes (same as /proc/partitions) t=$(sfdisk --show-size "${DISK}") || fail "failed: sfdisk --show-size $DISK" disk_size=$((t*1024)) sector_num=$(($disk_size/$sector_size)) msg="disk size '$disk_size' not evenly div by sector size '$sector_size'" [ "$((${disk_size}%${sector_size}))" -eq 0 ] || error "WARN: $msg" restore_func=sfdisk_restore_legacy else # --list first line output: # Disk /dev/vda: 20 GiB, 21474836480 bytes, 41943040 sectors local _x read _x _x _x _x disk_size _x sector_num _x < "$tmp" sector_size=$((disk_size/$sector_num)) restore_func=sfdisk_restore fi debug 1 "$sector_num sectors of $sector_size. total size=${disk_size} bytes" rqe sfd_dump sfdisk --unit=S --dump "${DISK}" >"${dump_out}" || fail "failed to dump sfdisk info for ${DISK}" RESTORE_HUMAN="$dump_out" { echo "## sfdisk --unit=S --dump ${DISK}" cat "${dump_out}" } >"$humanpt" [ $? -eq 0 ] || fail "failed to save sfdisk -d output" RESTORE_HUMAN="$humanpt" debugcat 1 "$humanpt" sed -e 's/,//g; s/start=/start /; s/size=/size /' "${dump_out}" \ >"${dump_mod}" || fail "sed failed on dump output" get_diskpart_path $DISK $PART dpart="$_RET" pt_start=$(awk '$1 == pt { print $4 }' "pt=${dpart}" <"${dump_mod}") && pt_size=$(awk '$1 == pt { print $6 }' "pt=${dpart}" <"${dump_mod}") && [ -n "${pt_start}" -a -n "${pt_size}" ] && pt_end=$((${pt_size} + ${pt_start} - 1)) || fail "failed to get start and end for ${dpart} in ${DISK}" # find the minimal starting location that is >= pt_end max_end=$(awk '$3 == "start" { if($4 >= pt_end && $4 < min) { min = $4 } } END { printf("%s\n",min); }' \ min=${sector_num} pt_end=${pt_end} "${dump_mod}") && [ -n "${max_end}" ] || fail "failed to get max_end for partition ${PART}" # As sector numbering starts from 0 need to reduce value by 1. max_end=$((max_end - 1)) if [ "$format" = "gpt" ]; then # sfdisk respects 'last-lba' in input, and complains about # partitions that go past that. without it, it does the right thing. sed -i '/^last-lba:/d' "$dump_out" || fail "failed to remove last-lba from output" fi if [ "$format" = "dos" ]; then mbr_max_sectors=$((mbr_max_512*$((sector_size/512)))) if [ "$max_end" -gt "$mbr_max_sectors" ]; then max_end=$mbr_max_sectors fi [ $(($disk_size/512)) -gt $mbr_max_512 ] && debug 0 "WARNING: MBR/dos partitioned disk is larger than 2TB." \ "Additional space will go unused." fi local gpt_second_size="33" if [ "${max_end}" -gt "$((${sector_num}-${gpt_second_size}))" ]; then # if MBR, allow subsequent conversion to GPT without shrinking # the partition and safety net at cost of 33 sectors seems # reasonable. If GPT, we can't write there anyway. debug 1 "padding ${gpt_second_size} sectors for gpt secondary header" max_end=$((${sector_num} - ${gpt_second_size} - 1)) fi if [ -n "${free_percent}" ]; then free_percent_sectors=$((sector_num/100*free_percent)) if [ "$format" = "dos" ]; then if [ $(($disk_size/512)) -ge $((mbr_max_512+free_percent_sectors)) ]; then # If MBR partitioned disk larger than 2TB and # remaining space over 2TB boundary is greater # than the requested overprovisioning sectors # then do not change max_end. debug 1 "WARNING: Additional unused space on MBR/dos partitioned disk" \ "is larger than requested percent of overprovisioning." elif [ $sector_num -gt $mbr_max_512 ]; then # If only some of the overprovisioning sectors # are over the 2TB boundary then reduce max_end # by the remaining number of overprovisioning # sectors. excess_sectors=$((sector_num-mbr_max_512)) remaining_free_sectors=$((free_percent_sectors - excess_sectors)) debug 1 "reserving ${remaining_free_sectors} sectors from MBR maximum for overprovisioning" max_end=$((max_end - remaining_free_sectors)) else # Shrink max_end to keep X% of whole disk unused # (for overprovisioning). debug 1 "reserving ${free_percent_sectors} sectors (${free_percent}%) for overprovisioning" max_end=$((max_end-free_percent_sectors)) fi if [ ${max_end} -lt ${pt_end} ]; then nochange "partition ${PART} could not be grown while leaving" \ "${free_percent}% (${free_percent_sectors} sectors) free on device" return fi else # Shrink max_end to keep X% of whole disk unused # (for overprovisioning). debug 1 "reserving ${free_percent_sectors} sectors (${free_percent}%) for overprovisioning" max_end=$((max_end-free_percent_sectors)) if [ ${max_end} -lt ${pt_end} ]; then nochange "partition ${PART} could not be grown while leaving" \ "${free_percent}% (${free_percent_sectors} sectors) free on device" return fi fi fi debug 1 "max_end=${max_end} tot=${sector_num} pt_end=${pt_end}" \ "pt_start=${pt_start} pt_size=${pt_size}" [ $((${pt_end})) -eq ${max_end} ] && { nochange "partition ${PART} is size ${pt_size}. it cannot be grown" return } [ $((${pt_end}+(${FUDGE}/$sector_size))) -gt ${max_end} ] && { nochange "partition ${PART} could only be grown by" \ "$((${max_end}-${pt_end})) [fudge=$((${FUDGE}/$sector_size))]" return } # Now, change the size for this partition in ${dump_out} to be the # new size. new_size=$((${max_end} - ${pt_start} + 1)) sed "\|^\s*${dpart} |s/\(.*\)${pt_size},/\1${new_size},/" "${dump_out}" \ >"${new_out}" || fail "failed to change size in output" change_info="partition=${PART} start=${pt_start}" change_info="${change_info} old: size=${pt_size} end=${pt_end}" change_info="${change_info} new: size=${new_size} end=${max_end}" if [ ${DRY_RUN} -ne 0 ]; then echo "CHANGE: ${change_info}" { echo "# === old sfdisk -d ===" cat "${dump_out}" echo "# === new sfdisk -d ===" cat "${new_out}" } 1>&2 exit 0 fi MBR_BACKUP="${mbr_backup}" LANG=C sfdisk --no-reread "${DISK}" --force \ -O "${mbr_backup}" <"${new_out}" >"${change_out}" 2>&1 ret=$? [ $ret -eq 0 ] || RESTORE_FUNC="${restore_func}" if [ $ret -eq 0 ]; then debug 1 "resize of ${DISK} returned 0." if [ $VERBOSITY -gt 2 ]; then sed 's,^,| ,' "${change_out}" 1>&2 fi elif $PT_UPDATE && sfdisk_worked_but_blkrrpart_failed "$ret" "${change_out}"; then # if the command failed, but it looks like only because # the device was busy and we have pt_update, then go on debug 1 "sfdisk failed, but likely only because of blkrrpart" else error "attempt to resize ${DISK} failed. sfdisk output below:" sed 's,^,| ,' "${change_out}" 1>&2 fail "failed to resize" fi rq pt_update pt_update "$DISK" "$PART" || fail "pt_resize failed" RESTORE_FUNC="" changed "${change_info}" return # dump_out looks something like: ## partition table of /tmp/out.img #unit: sectors # #/tmp/out.img1 : start= 1, size= 48194, Id=83 #/tmp/out.img2 : start= 48195, size= 963900, Id=83 #/tmp/out.img3 : start= 1012095, size= 305235, Id=82 #/tmp/out.img4 : start= 1317330, size= 771120, Id= 5 #/tmp/out.img5 : start= 1317331, size= 642599, Id=83 #/tmp/out.img6 : start= 1959931, size= 48194, Id=83 #/tmp/out.img7 : start= 2008126, size= 80324, Id=83 } gpt_restore() { sgdisk -l "${GPT_BACKUP}" "${DISK}" } resize_sgdisk() { GPT_BACKUP="${TEMP_D}/pt.backup" local pt_info="${TEMP_D}/pt.info" local pt_pretend="${TEMP_D}/pt.pretend" local pt_data="${TEMP_D}/pt.data" local out="${TEMP_D}/out" local dev="disk=${DISK} partition=${PART}" local pt_start pt_end pt_size last pt_max code guid name new_size local old new change_info sector_size # Dump the original partition information and details to disk. This is # used in case something goes wrong and human interaction is required # to revert any changes. rqe sgd_info sgdisk "--info=${PART}" --print "${DISK}" >"${pt_info}" || fail "${dev}: failed to dump original sgdisk info" RESTORE_HUMAN="${pt_info}" # support reading old format (<1.0.2) # Logical sector size: <VAL> bytes # and newer format >= 1.0.2 # Sector size (logical): <VAL> bytes # Sector size (logical/physical): <VAL>/<PVAL> bytes sector_size=$(awk ' $0 ~ /^Logical sector size:.*bytes/ { print $4; exit(0); } $0 ~ /^Sector size \(logical\):/ { print $4; exit(0); } $0 ~ /^Sector size \(logical\/physical\):/ { sub(/\/.*/, "", $4); print $4; exit(0); }' \ "$pt_info") && [ -n "$sector_size" ] || { sector_size=512 error "WARN: did not find sector size, assuming 512" } debug 1 "$dev: original sgdisk info:" debugcat 1 "${pt_info}" # Pretend to move the backup GPT header to the end of the disk and dump # the resulting partition information. We use this info to determine if # we have to resize the partition. rqe sgd_pretend sgdisk --pretend --move-second-header \ --print "${DISK}" >"${pt_pretend}" || fail "${dev}: failed to dump pretend sgdisk info" debug 1 "$dev: pretend sgdisk info" debugcat 1 "${pt_pretend}" # Extract the partition data from the pretend dump awk 'found { print } ; $1 == "Number" { found = 1 }' \ "${pt_pretend}" >"${pt_data}" || fail "${dev}: failed to parse pretend sgdisk info" # Get the start and end sectors of the partition to be grown pt_start=$(awk '$1 == '"${PART}"' { print $2 }' "${pt_data}") && [ -n "${pt_start}" ] || fail "${dev}: failed to get start sector" pt_end=$(awk '$1 == '"${PART}"' { print $3 }' "${pt_data}") && [ -n "${pt_end}" ] || fail "${dev}: failed to get end sector" # Start and end are inclusive, start 2048 end 2057 is length 10. pt_size="$((${pt_end} - ${pt_start} + 1))" # Get the last usable sector last=$(awk '/last usable sector is/ { print $NF }' \ "${pt_pretend}") && [ -n "${last}" ] || fail "${dev}: failed to get last usable sector" # Find the maximal end sector that is >= pt_end pt_max=$(awk '{ if ($2 >= pt_end && $2 < min) { min = $2 } } END \ { print min-1 }' min="${last}" pt_end="${pt_end}" \ "${pt_data}") && [ -n "${pt_max}" ] || fail "${dev}: failed to find max end sector" debug 1 "${dev}: pt_start=${pt_start} pt_end=${pt_end}" \ "pt_size=${pt_size} pt_max=${pt_max} last=${last}" # Check if the partition can be grown [ "${pt_end}" -eq "${pt_max}" ] && { nochange "${dev}: size=${pt_size}, it cannot be grown" return } [ "$((${pt_end} + ${FUDGE}/${sector_size}))" -gt "${pt_max}" ] && { nochange "${dev}: could only be grown by" \ "$((${pt_max} - ${pt_end})) [fudge=$((${FUDGE}/$sector_size))]" return } # The partition can be grown if we made it here. Get some more info # about it so we can do it properly. # FIXME: Do we care about the attribute flags? code=$(awk '/^Partition GUID code:/ { print $4 }' "${pt_info}") guid=$(awk '/^Partition unique GUID:/ { print $4 }' "${pt_info}") name=$(awk '/^Partition name:/ { gsub(/'"'"'/, "") ; \ if (NF >= 3) print substr($0, index($0, $3)) }' "${pt_info}") [ -n "${code}" -a -n "${guid}" ] || fail "${dev}: failed to parse sgdisk details" debug 1 "${dev}: code=${code} guid=${guid} name='${name}'" local wouldrun="" [ "$DRY_RUN" -ne 0 ] && wouldrun="would-run" # Calculate the new size of the partition new_size=$((${pt_max} - ${pt_start} + 1)) change_info="partition=${PART} start=${pt_start}" change_info="${change_info} old: size=${pt_size} end=${pt_end}" change_info="${change_info} new: size=${new_size} end=${pt_max}" # Backup the current partition table, we're about to modify it rq sgd_backup $wouldrun sgdisk "--backup=${GPT_BACKUP}" "${DISK}" || fail "${dev}: failed to backup the partition table" # Modify the partition table. We do it all in one go (the order is # important!): # - move the GPT backup header to the end of the disk # - delete the partition # - recreate the partition with the new size # - set the partition code # - set the partition GUID # - set the partition name rq sgdisk_mod $wouldrun sgdisk --move-second-header "--delete=${PART}" \ "--new=${PART}:${pt_start}:$((pt_max-1))" \ "--typecode=${PART}:${code}" \ "--partition-guid=${PART}:${guid}" \ "--change-name=${PART}:${name}" "${DISK}" && rq pt_update $wouldrun pt_update "$DISK" "$PART" || { RESTORE_FUNC=gpt_restore fail "${dev}: failed to repartition" } # Dry run [ "${DRY_RUN}" -ne 0 ] && { change "${change_info}" return } changed "${change_info}" return } kver_to_num() { local kver="$1" maj min mic # Canonicalize the kernel version kver=${kver%%[!0-9.]*}.0.0 maj=${kver%%[!0-9]*} kver=${kver#*.} min=${kver%%[!0-9]*} kver=${kver#*.} mic=${kver%%[!0-9]*} _RET=$((maj*1000*1000+min*1000+mic)) } kver_cmp() { local op="$2" n1="" n2="" kver_to_num "$1" n1="$_RET" kver_to_num "$3" n2="$_RET" test $n1 $op $n2 } rq() { # runquieterror(label, command) # gobble stderr of a command unless it errors local label="$1" ret="" efile="" efile="$TEMP_D/$label.err" shift; local rlabel="running" [ "$1" = "would-run" ] && rlabel="would-run" && shift local cmd="" x="" for x in "$@"; do [ "${x#* }" != "$x" -o "${x#* \"}" != "$x" ] && x="'$x'" cmd="$cmd $x" done cmd=${cmd# } debug 2 "${rlabel}[$label][$_capture]" "$cmd" [ "$rlabel" = "would-run" ] && return 0 if [ "${_capture}" = "erronly" ]; then "$@" 2>"$TEMP_D/$label.err" ret=$? else "$@" >"$TEMP_D/$label.err" 2>&1 ret=$? fi if [ $ret -ne 0 ]; then error "failed [$label:$ret]" "$@" cat "$efile" 1>&2 fi return $ret } rqe() { local _capture="erronly" rq "$@" } verify_ptupdate() { local input="$1" found="" reason="" kver="" # we can always satisfy 'off' if [ "$input" = "off" ]; then _RET="false"; return 0; fi if command -v partx >/dev/null 2>&1; then local out="" ret=0 out=$(partx --help 2>&1) ret=$? if [ $ret -eq 0 ]; then echo "$out" | grep -q -- --update || { reason="partx has no '--update' flag in usage." found="off" } else reason="'partx --help' returned $ret. assuming it is old." found="off" fi else reason="no 'partx' command" found="off" fi if [ -z "$found" ]; then if [ "$(uname)" != "Linux" ]; then reason="Kernel is not Linux per uname." found="off" fi fi if [ -z "$found" ]; then kver=$(uname -r) || debug 1 "uname -r failed!" if ! kver_cmp "${kver-0.0.0}" -ge 3.8.0; then reason="Kernel '$kver' < 3.8.0." found="off" fi fi if [ -z "$found" ]; then _RET="true" return 0 fi case "$input" in on) error "$reason"; return 1;; auto) _RET="false"; debug 1 "partition update disabled: $reason" return 0;; force) _RET="true" error "WARNING: ptupdate forced on even though: $reason" return 0;; esac error "unknown input '$input'"; return 1; } pt_update() { local dev="$1" part="$2" update="${3:-$PT_UPDATE}" if ! $update; then return 0 fi # partx only works on block devices (do not run on file) [ -b "$dev" ] || return 0 partx --update --nr "$part" "$dev" } has_cmd() { command -v "${1}" >/dev/null 2>&1 } resize_sgdisk_gpt() { resize_sgdisk gpt } resize_sgdisk_dos() { fail "unable to resize dos label with sgdisk" } resize_sfdisk_gpt() { resize_sfdisk gpt } resize_sfdisk_dos() { resize_sfdisk dos } get_table_format() { local out="" disk="$1" if has_cmd blkid && blkid --version | grep -q util-linux && out=$(blkid -o value -s PTTYPE "$disk") && [ "$out" = "dos" -o "$out" = "gpt" ]; then _RET="$out" return fi _RET="dos" if [ -z "$SFDISK" ]; then out=$(LANG=C sgdisk --print "$disk") || { error "Could not determine partition table format of $disk" \ "with 'sgdisk --print $disk'" return 1 } # looking for a message like: # Found invalid GPT and valid MBR; converting MBR to GPT format case "$out" in *\ valid\ MBR\ *) _RET="dos";; *) _RET="gpt";; esac return elif [ ${SFDISK_VERSION} -lt ${SFDISK_2_26} ] && out=$(sfdisk --id --force "$disk" 1 2>/dev/null); then if [ "$out" = "ee" ]; then _RET="gpt" else _RET="dos" fi return elif out=$(LANG=C sfdisk --list "$disk"); then out=$(echo "$out" | sed -e '/Disklabel type/!d' -e 's/.*: //') case "$out" in gpt|dos) _RET="$out";; *) error "WARN: unknown label $out";; esac fi } get_resizer() { local format="$1" user=${2:-"auto"} case "$user" in sgdisk) _RET="resize_sgdisk_$format"; return;; sfdisk) _RET="resize_sfdisk_$format"; return;; auto) :;; *) error "unexpected value '$user' for growpart resizer"; return 1;; esac if [ "$format" = "dos" ]; then [ -n "$SFDISK" ] || { error "sfdisk is required for resizing dos/MBR partition table." return 1 } _RET="resize_sfdisk_dos" return 0 fi if [ "${SFDISK_VERSION}" -ge ${SFDISK_V_WORKING_GPT} ]; then # sfdisk 2.26.2 works for resize but loses type (LP: #1474090) _RET="resize_sfdisk_gpt" elif has_cmd sgdisk; then _RET="resize_sgdisk_$format" else error "no tools available to resize disk with '$format'" return 1 fi return 0 } maybe_lvm_resize() { local disk="$1" part="$2" partpath="" ret="" out="" wouldrun="" [ "$DRY_RUN" -ne 0 ] && wouldrun="would-run" has_cmd lvm || { debug 2 "No lvm command, cannot attempt lvm resize of disk '$disk' part '$part'" return 0 } get_diskpart_path "$1" "$2" || { error "could not determine partition path for disk '$DISK' part '$part'" return 1 } partpath="$_RET" # can't use rq or rqe here because of "not an lvm" exit code 5. set -- lvm pvs --nolocking --readonly -o pvname "$partpath" debug 2 "executing: $*" out=$("$@" 2>&1) ret=$? case "$ret" in 5) debug 1 "$partpath is not an lvm pv"; return 0;; 0) :;; *) error "failed to execute [$ret] '$*'" error "$out" return 1;; esac rq lvm_resize $wouldrun lvm pvresize "$partpath" || { error "Failed to resize lvm pv $partpath" return 1 } return 0 } pt_update="auto" resizer=${GROWPART_RESIZER:-"auto"} while [ $# -ne 0 ]; do cur=${1} next=${2} case "$cur" in -h|--help) Usage exit 0 ;; --free-percent|--free-percent=*) if [ "${cur#--free-percent=}" != "$cur" ]; then next="${cur#--free-percent=}" else shift fi if [ "$next" -gt 0 ] 2>/dev/null && [ "$next" -lt 100 ] 2>/dev/null; then free_percent=$next else fail "unknown/invalid --free-percent option: $next" fi ;; --fudge) FUDGE=${next} shift ;; -N|--dry-run) DRY_RUN=1 ;; -u|--update|--update=*) if [ "${cur#--update=}" != "$cur" ]; then next="${cur#--update=}" else shift fi case "$next" in off|auto|force|on) pt_update=$next;; *) fail "unknown --update option: $next";; esac ;; -v|--verbose) VERBOSITY=$(($VERBOSITY+1)) ;; --) shift break ;; -*) fail "unknown option ${cur}" ;; *) if [ -z "${DISK}" ]; then DISK=${cur} else [ -z "${PART}" ] || fail "confused by arg ${cur}" PART=${cur} fi ;; esac shift done [ -n "${DISK}" ] || bad_Usage "must supply disk and partition-number" [ -n "${PART}" ] || bad_Usage "must supply partition-number" [ -e "${DISK}" ] || fail "${DISK}: does not exist" # cache the has_cmd return value. has_cmd sfdisk && SFDISK=sfdisk || SFDISK="" has_cmd sgdisk && SGDISK=sgdisk || SGDISK="" [ -n "$SGDISK" -o -n "$SFDISK" ] || fail "Did not have sfdisk or sgdisk in PATH." get_sfdisk_version || fail # If $DISK is a symlink, resolve it. # This avoids problems due to varying partition device name formats # (e.g. "1" for /dev/sda vs "-part1" for /dev/disk/by-id/name) if [ -L "${DISK}" ]; then has_cmd readlink || fail "${DISK} is a symlink, but 'readlink' command not available." real_disk=$(readlink -f "${DISK}") || fail "unable to resolve ${DISK}" debug 1 "${DISK} resolved to ${real_disk}" DISK=${real_disk} fi [ "${PART#*[!0-9]}" = "${PART}" ] || fail "partition-number must be a number" verify_ptupdate "$pt_update" || fail PT_UPDATE=$_RET debug 1 "update-partition set to $PT_UPDATE" mktemp_d && TEMP_D="${_RET}" || fail "failed to make temp dir" trap cleanup 0 # EXIT - some shells may not like 'EXIT' but are ok with 0 # get the ID of the first partition to determine if it's MBR or GPT get_table_format "$DISK" || fail format=$_RET get_resizer "$format" "$resizer" || fail "failed to get a resizer for format '$format'" resizer=$_RET lock_disk $DISK debug 1 "resizing $PART on $DISK using $resizer" "$resizer" ret=$? unlock_disk_and_settle $DISK if [ "$RESIZE_RESULT" = "CHANGED" -o "$RESIZE_RESULT" = "CHANGE" ]; then maybe_lvm_resize "$DISK" "$PART" || fail "lvm resize failed." fi exit $ret # vi: ts=4 noexpandtab
[+]
..
[-] stream
[edit]
[-] autom4te
[edit]
[-] icu-config
[edit]
[-] perlbug
[edit]
[-] mysqlcheck
[edit]
[-] gdk-pixbuf-query-loaders-64
[edit]
[-] pwscore
[edit]
[-] nf-log
[edit]
[-] nl-route-delete
[edit]
[-] sg_senddiag
[edit]
[-] icu-config-64
[edit]
[-] httxt2dbm
[edit]
[-] systemd-sysext
[edit]
[-] udevadm
[edit]
[-] growpart
[edit]
[-] compile_et
[edit]
[-] sg_safte
[edit]
[-] mysqlbinlog
[edit]
[-] btrace
[edit]
[-] myisamlog
[edit]
[-] python3-html2text
[edit]
[-] tbl
[edit]
[-] diff
[edit]
[-] xmlcatalog
[edit]
[-] glib-compile-resources
[edit]
[-] systemctl
[edit]
[-] fc-pattern
[edit]
[-] ab
[edit]
[-] gpic
[edit]
[-] dos2unix
[edit]
[-] ranlib
[edit]
[-] xdg-dbus-proxy
[edit]
[-] sg_sync
[edit]
[-] man
[edit]
[-] nl
[edit]
[-] mysqldump
[edit]
[-] rev
[edit]
[-] pidof
[edit]
[-] ansible-config
[edit]
[-] passwd
[edit]
[-] captoinfo
[edit]
[-] ansible-console
[edit]
[-] ssh-add
[edit]
[-] watch
[edit]
[-] zmore
[edit]
[-] rvi
[edit]
[-] mountpoint
[edit]
[-] osinfo-db-import
[edit]
[-] mysql_secure_installation
[edit]
[-] gv2gxl
[edit]
[-] kbdinfo
[edit]
[-] compare
[edit]
[-] ulimit
[edit]
[-] l2ping
[edit]
[-] nail
[edit]
[-] sg
[edit]
[-] systemd-machine-id-setup
[edit]
[-] sg_stream_ctl
[edit]
[-] sudoreplay
[edit]
[-] grub2-menulst2cfg
[edit]
[-] readlink
[edit]
[-] pip
[edit]
[-] man.man-db
[edit]
[-] jsondiff
[edit]
[-] gpgme-json
[edit]
[-] ea-php83-pecl
[edit]
[-] vdosetuuid
[edit]
[-] sg_get_elem_status
[edit]
[-] sg_xcopy
[edit]
[-] sh
[edit]
[-] ea-php82
[edit]
[-] recode-sr-latin
[edit]
[-] filan
[edit]
[-] gpg
[edit]
[-] c++
[edit]
[-] upower
[edit]
[-] ionice
[edit]
[-] sss_ssh_authorizedkeys
[edit]
[-] os-prober
[edit]
[-] ld.bfd
[edit]
[-] evmctl
[edit]
[-] ssh-keyscan
[edit]
[-] grub2-glue-efi
[edit]
[-] command
[edit]
[-] hostnamectl
[edit]
[-] grep
[edit]
[-] screen
[edit]
[-] xdg-desktop-menu
[edit]
[-] nl-neigh-list
[edit]
[-] sg_ses
[edit]
[-] pip-3.9
[edit]
[-] lsmcli
[edit]
[-] pngfix
[edit]
[-] mktemp
[edit]
[-] corelist
[edit]
[-] cockpit-bridge
[edit]
[-] pmap
[edit]
[-] unix2mac
[edit]
[-] cl-linksafe-reconfigure
[edit]
[-] repotrack
[edit]
[-] systemd-tmpfiles
[edit]
[-] setfont
[edit]
[-] vdodumpconfig
[edit]
[-] mysqlimport
[edit]
[-] x86_64
[edit]
[-] git-upload-pack
[edit]
[-] python3-config
[edit]
[-] perl
[edit]
[-] msgexec
[edit]
[-] shred
[edit]
[-] gpgv2
[edit]
[-] pydoc
[edit]
[-] bzcat
[edit]
[-] dmesg
[edit]
[-] zip
[edit]
[-] bluemoon
[edit]
[-] ansible
[edit]
[-] verify_blkparse
[edit]
[-] composite
[edit]
[-] slencheck
[edit]
[-] false
[edit]
[-] ps
[edit]
[-] ptargrep
[edit]
[-] yum-config-manager
[edit]
[-] gc
[edit]
[-] formail
[edit]
[-] hb-ot-shape-closure
[edit]
[-] scl_enabled
[edit]
[-] mapscrn
[edit]
[-] chmod
[edit]
[-] dpkg
[edit]
[-] pigz
[edit]
[-] setarch
[edit]
[-] preconv
[edit]
[-] hex2hcd
[edit]
[-] lchfn
[edit]
[-] basename
[edit]
[-] osql
[edit]
[-] canberra-gtk-play
[edit]
[-] prove
[edit]
[-] xdg-email
[edit]
[-] instmodsh
[edit]
[-] sg_read_long
[edit]
[-] sotruss
[edit]
[-] mdig
[edit]
[-] gpg-wks-server
[edit]
[-] podchecker
[edit]
[-] btmgmt
[edit]
[-] flex
[edit]
[-] chgrp
[edit]
[-] usb-devices
[edit]
[-] grub2-syslinux2cfg
[edit]
[-] systemd-socket-activate
[edit]
[-] rm
[edit]
[-] update-ca-trust
[edit]
[-] ipcalc
[edit]
[-] iptc
[edit]
[-] printf
[edit]
[-] fc-match
[edit]
[-] ea-php82-pecl
[edit]
[-] doveconf
[edit]
[-] bootconfig
[edit]
[-] unix2dos
[edit]
[-] zless
[edit]
[-] zcat
[edit]
[-] xgettext
[edit]
[-] sasl2-sample-client
[edit]
[-] bc
[edit]
[-] csplit
[edit]
[-] aulast
[edit]
[-] cloud-init
[edit]
[-] sg_read_block_limits
[edit]
[-] nf-queue
[edit]
[-] lsof
[edit]
[-] stunnel
[edit]
[-] display
[edit]
[-] autoscan
[edit]
[-] groff
[edit]
[-] fc-query
[edit]
[-] gdbmtool
[edit]
[-] python3.9-config
[edit]
[-] lsns
[edit]
[-] cc
[edit]
[-] bzegrep
[edit]
[-] colrm
[edit]
[-] setterm
[edit]
[-] column
[edit]
[-] innochecksum
[edit]
[-] osinfo-detect
[edit]
[-] yum-debug-restore
[edit]
[-] dirname
[edit]
[-] krb5-config
[edit]
[-] gapplication
[edit]
[-] tclsh8.6
[edit]
[-] xdg-screensaver
[edit]
[-] keyctl
[edit]
[-] cpp
[edit]
[-] gpgrt-config
[edit]
[-] tput
[edit]
[-] ssh-agent
[edit]
[-] msggrep
[edit]
[-] dovecot-sysreport
[edit]
[-] uniq
[edit]
[-] dbus-uuidgen
[edit]
[-] getopts
[edit]
[-] myisam_ftdump
[edit]
[-] lscpu
[edit]
[-] vdoforcerebuild
[edit]
[-] g++
[edit]
[-] yum-groups-manager
[edit]
[-] zipcloak
[edit]
[-] xzless
[edit]
[-] nl-monitor
[edit]
[-] perror
[edit]
[-] odbc_config
[edit]
[-] nslookup
[edit]
[-] rpm
[edit]
[-] dbus-broker-launch
[edit]
[-] wmf2svg
[edit]
[-] sg_copy_results
[edit]
[-] mkfifo
[edit]
[-] dpkg-statoverride
[edit]
[-] dpkg-deb
[edit]
[-] choom
[edit]
[-] sg_write_x
[edit]
[-] su
[edit]
[-] nsenter
[edit]
[-] dbilogstrip
[edit]
[-] pkcon
[edit]
[-] autopoint
[edit]
[-] ci
[edit]
[-] sg_get_lba_status
[edit]
[-] miniterm-3.py
[edit]
[-] sha1hmac
[edit]
[-] dot2gxl
[edit]
[-] sha256hmac
[edit]
[-] ea-php83-pear
[edit]
[-] gsf-office-thumbnailer
[edit]
[-] grub2-mkstandalone
[edit]
[-] systemd-cryptenroll
[edit]
[-] gpgparsemail
[edit]
[-] chmem
[edit]
[-] lsscsi
[edit]
[-] nf-ct-add
[edit]
[-] cpansign
[edit]
[-] grub2-mkrescue
[edit]
[-] ldd
[edit]
[-] socat
[edit]
[-] xmllint
[edit]
[-] sg_reset_wp
[edit]
[-] simc_lsmplugin
[edit]
[-] ndptool
[edit]
[-] true
[edit]
[-] autoreconf
[edit]
[-] bash
[edit]
[-] tzselect
[edit]
[-] systemd-delta
[edit]
[-] gpgv
[edit]
[-] utmpdump
[edit]
[-] unlink
[edit]
[-] realpath
[edit]
[-] rpmkeys
[edit]
[-] kbdrate
[edit]
[-] gcov-dump
[edit]
[-] journalctl
[edit]
[-] watchgnupg
[edit]
[-] sg_opcodes
[edit]
[-] bond2team
[edit]
[-] sha256sum
[edit]
[-] preunzip
[edit]
[-] run-with-aspell
[edit]
[-] sha384sum
[edit]
[-] users
[edit]
[-] gst-inspect-1.0
[edit]
[-] pygettext.py
[edit]
[-] unshare
[edit]
[-] secon
[edit]
[-] gettextize
[edit]
[-] tail
[edit]
[-] xsltproc
[edit]
[-] x86_energy_perf_policy
[edit]
[-] ansible-galaxy
[edit]
[-] semodule_expand
[edit]
[-] ps2ps2
[edit]
[-] scsi_logging_level
[edit]
[-] appstream-compose
[edit]
[-] xdg-desktop-icon
[edit]
[-] tr
[edit]
[-] grub2-editenv
[edit]
[-] scsi-rescan
[edit]
[-] pdf2dsc
[edit]
[-] dpkg-maintscript-helper
[edit]
[-] linux64
[edit]
[-] chrt
[edit]
[-] patchwork
[edit]
[-] named-rrchecker
[edit]
[-] numfmt
[edit]
[-] sg_decode_sense
[edit]
[-] setfattr
[edit]
[-] dpkg-split
[edit]
[-] nproc
[edit]
[-] strace-log-merge
[edit]
[-] htdigest
[edit]
[-] ptardiff
[edit]
[-] fg
[edit]
[-] setpriv
[edit]
[-] teamd
[edit]
[-] tcptraceroute
[edit]
[-] grub2-mknetdir
[edit]
[-] firewall-cmd
[edit]
[-] ausyscall
[edit]
[-] semodule_link
[edit]
[-] c89
[edit]
[-] gv2gml
[edit]
[-] setmetamode
[edit]
[-] sg_reassign
[edit]
[-] ac
[edit]
[-] gpg-card
[edit]
[-] sg_format
[edit]
[-] type
[edit]
[-] pipewire
[edit]
[-] aulastlog
[edit]
[-] setfacl
[edit]
[-] plesk_configure
[edit]
[-] grub2-mkpasswd-pbkdf2
[edit]
[-] ea-wappspector
[edit]
[-] funzip
[edit]
[-] grub2-mkimage
[edit]
[-] deallocvt
[edit]
[-] iio_generic_buffer
[edit]
[-] lwp-download
[edit]
[-] cpapi1
[edit]
[-] link
[edit]
[-] localectl
[edit]
[-] pidwait
[edit]
[-] doveadm
[edit]
[-] peekfd
[edit]
[-] systemd-inhibit
[edit]
[-] look
[edit]
[-] dircolors
[edit]
[-] php74-phar
[edit]
[-] dnsdomainname
[edit]
[-] gzexe
[edit]
[-] sg_read_attr
[edit]
[-] sg_write_verify
[edit]
[-] ld.so
[edit]
[-] msgattrib
[edit]
[-] dig
[edit]
[-] pipewire-aes67
[edit]
[-] pwmake
[edit]
[-] systemd-id128
[edit]
[-] blkiomon
[edit]
[-] modulemd-validator
[edit]
[-] sxpm
[edit]
[-] nl-addr-delete
[edit]
[-] nl-link-ifindex2name
[edit]
[-] size
[edit]
[-] kmod
[edit]
[-] atrm
[edit]
[-] pango-segmentation
[edit]
[-] bsqlodbc
[edit]
[-] gawk
[edit]
[-] lchsh
[edit]
[-] linux32
[edit]
[-] pip3
[edit]
[-] bunzip2
[edit]
[-] ea-php81-pecl
[edit]
[-] systemd-ask-password
[edit]
[-] xslt-config
[edit]
[-] nl-link-enslave
[edit]
[-] cvtsudoers
[edit]
[-] zipnote
[edit]
[-] col
[edit]
[-] vdostats
[edit]
[-] h2xs
[edit]
[-] sg_bg_ctl
[edit]
[-] graphml2gv
[edit]
[-] ea-php81-pear
[edit]
[-] fprintd-verify
[edit]
[-] chcat
[edit]
[-] nmcli
[edit]
[-] autoheader
[edit]
[-] renew-dummy-cert
[edit]
[-] protoc-gen-c
[edit]
[-] autoconf
[edit]
[-] mysqlpump
[edit]
[-] ansible-doc
[edit]
[-] chfn
[edit]
[-] fc-validate
[edit]
[-] miniterm.py
[edit]
[-] gr2fonttest
[edit]
[-] reposync
[edit]
[-] aclocal
[edit]
[-] envml
[edit]
[-] gsettings
[edit]
[-] lwp-request
[edit]
[-] sadf
[edit]
[-] sg_compare_and_write
[edit]
[-] nano
[edit]
[-] pftp
[edit]
[-] systemd-stdio-bridge
[edit]
[-] kdumpctl
[edit]
[-] objdump
[edit]
[-] vdodmeventd
[edit]
[-] wait
[edit]
[-] kill
[edit]
[-] fc-list
[edit]
[-] rpmquery
[edit]
[-] fisql
[edit]
[-] ima-add-sigs
[edit]
[-] sg_wr_mode
[edit]
[-] json_verify
[edit]
[-] rcs
[edit]
[-] ca-legacy
[edit]
[-] kernel-install
[edit]
[-] checkmodule
[edit]
[-] view
[edit]
[-] ls
[edit]
[-] dltest
[edit]
[-] quota
[edit]
[-] pphs
[edit]
[-] gobject-query
[edit]
[-] btt
[edit]
[-] cluster
[edit]
[-] php74-pear
[edit]
[-] sg_ses_microcode
[edit]
[-] c99
[edit]
[-] animate
[edit]
[-] pkttyagent
[edit]
[-] lneato
[edit]
[-] hash
[edit]
[-] perlml
[edit]
[-] freebcp
[edit]
[-] wmf2x
[edit]
[-] pod2usage
[edit]
[-] protoc
[edit]
[-] sg_sanitize
[edit]
[-] ea-php80
[edit]
[-] diffimg
[edit]
[-] idiag-socket-details
[edit]
[-] vi
[edit]
[-] scsi_temperature
[edit]
[-] nf-monitor
[edit]
[-] tee
[edit]
[-] msgunfmt
[edit]
[-] bsqldb
[edit]
[-] datacopy
[edit]
[-] openvt
[edit]
[-] sg_persist
[edit]
[-] xzgrep
[edit]
[-] mdb_dump
[edit]
[-] env
[edit]
[-] sg_rtpg
[edit]
[-] perlthanks
[edit]
[-] gvcolor
[edit]
[-] manpath
[edit]
[-] lexgrog
[edit]
[-] imunify-fgw-dump
[edit]
[-] expr
[edit]
[-] truncate
[edit]
[-] edgepaint
[edit]
[-] nl-addr-add
[edit]
[-] json_reformat
[edit]
[-] nmtui-edit
[edit]
[-] msgconv
[edit]
[-] hb-view
[edit]
[-] grub2-render-label
[edit]
[-] write
[edit]
[-] scsi_ready
[edit]
[-] xargs
[edit]
[-] loginctl
[edit]
[-] uuidgen
[edit]
[-] neato
[edit]
[-] mailx.s-nail
[edit]
[-] dumpkeys
[edit]
[-] gmake
[edit]
[-] cloud-init-per
[edit]
[-] gvmap
[edit]
[-] umount
[edit]
[-] md5sum
[edit]
[-] xzegrep
[edit]
[-] df
[edit]
[-] rsync-ssl
[edit]
[-] genl-ctrl-list
[edit]
[-] Mail
[edit]
[-] bashbug
[edit]
[-] auvirt
[edit]
[-] myisampack
[edit]
[-] sim_lsmplugin
[edit]
[-] rcsclean
[edit]
[-] ssh-keygen
[edit]
[-] sginfo
[edit]
[-] jsonpointer
[edit]
[-] fprintd-delete
[edit]
[-] pw-jack
[edit]
[-] nl-pktloc-lookup
[edit]
[-] spell
[edit]
[-] xzcmp
[edit]
[-] fmt
[edit]
[-] osinfo-db-validate
[edit]
[-] repomanage
[edit]
[-] lsusb
[edit]
[-] git-receive-pack
[edit]
[-] hostname
[edit]
[-] qemu-ga
[edit]
[-] elinks
[edit]
[-] gml2gv
[edit]
[-] gpg-agent
[edit]
[-] isql
[edit]
[-] strip
[edit]
[-] cd
[edit]
[-] systemd-umount
[edit]
[-] systemd-path
[edit]
[-] cxpm
[edit]
[-] pcre2-config
[edit]
[-] json_xs
[edit]
[-] file
[edit]
[-] bzip2
[edit]
[-] update-crypto-policies
[edit]
[-] nmtui-hostname
[edit]
[-] gettext.sh
[edit]
[-] unicode_stop
[edit]
[-] xzdiff
[edit]
[-] zlib_decompress
[edit]
[-] znew
[edit]
[-] gst-launch-1.0
[edit]
[-] fdp
[edit]
[-] uuidparse
[edit]
[-] slabtop
[edit]
[-] sg_dd
[edit]
[-] sedismod
[edit]
[-] sqlite3
[edit]
[-] free
[edit]
[-] php74-cgi
[edit]
[-] gvpack
[edit]
[-] wpexec
[edit]
[-] ln
[edit]
[-] vlock
[edit]
[-] vimdot
[edit]
[-] lsattr
[edit]
[-] memcached
[edit]
[-] cmp
[edit]
[-] msgfmt
[edit]
[-] addr2line
[edit]
[-] prezip-bin
[edit]
[-] rpmverify
[edit]
[-] centrino-decode
[edit]
[-] stty
[edit]
[-] chsh
[edit]
[-] gpio-hammer
[edit]
[-] lsipc
[edit]
[-] pre-grohtml
[edit]
[-] strace
[edit]
[-] gprof
[edit]
[-] ansible-pull
[edit]
[-] cat
[edit]
[-] nl-nh-list
[edit]
[-] gcc-ranlib
[edit]
[-] teamdctl
[edit]
[-] tmon
[edit]
[-] chattr
[edit]
[-] dbus-broker
[edit]
[-] sg_rbuf
[edit]
[-] ansible-connection
[edit]
[-] mail
[edit]
[-] flatpak
[edit]
[-] chardetect
[edit]
[-] gvpr
[edit]
[-] orc-bugreport
[edit]
[-] wmf2gd
[edit]
[-] od
[edit]
[-] mailstat
[edit]
[-] mysql_tzinfo_to_sql
[edit]
[-] nl-neigh-delete
[edit]
[-] sg_vpd
[edit]
[-] timeout
[edit]
[-] xzdec
[edit]
[-] lz4_decompress
[edit]
[-] gxl2dot
[edit]
[-] package-cleanup
[edit]
[-] sealert
[edit]
[-] nl-link-release
[edit]
[-] grub2-fstest
[edit]
[-] debuginfo-install
[edit]
[-] x86_64-redhat-linux-c++
[edit]
[-] lwp-mirror
[edit]
[-] grub2-mkfont
[edit]
[-] ghostscript
[edit]
[-] procan
[edit]
[-] tapestat
[edit]
[-] msgfmt3.9.py
[edit]
[-] rpmdb
[edit]
[-] btattach
[edit]
[-] ident
[edit]
[-] lslogins
[edit]
[-] libnetcfg
[edit]
[-] ansible-playbook
[edit]
[-] grub2-mkrelpath
[edit]
[-] grotty
[edit]
[-] iio_event_monitor
[edit]
[-] xdg-mime
[edit]
[-] fribidi
[edit]
[-] dotty
[edit]
[-] wireplumber
[edit]
[-] dwz
[edit]
[-] zdiff
[edit]
[-] pod2man
[edit]
[-] merge
[edit]
[-] sg_seek
[edit]
[-] systemd-repart
[edit]
[-] gpasswd
[edit]
[-] glib-genmarshal
[edit]
[-] blkparse
[edit]
[-] psfaddtable
[edit]
[-] echo
[edit]
[-] ar
[edit]
[-] colcrt
[edit]
[-] certutil
[edit]
[-] nice
[edit]
[-] expand
[edit]
[-] nroff
[edit]
[-] nl-link-set
[edit]
[-] touch
[edit]
[-] gsnd
[edit]
[-] cronnext
[edit]
[-] mdb_copy
[edit]
[-] pyinotify
[edit]
[-] fc-cat
[edit]
[-] ea-php80-pear
[edit]
[-] vimtutor
[edit]
[-] uname
[edit]
[-] quotasync
[edit]
[-] lsmem
[edit]
[-] dirmngr
[edit]
[-] rcsfreeze
[edit]
[-] updatedb
[edit]
[-] needs-restarting
[edit]
[-] audit2allow
[edit]
[-] xxd
[edit]
[-] systemd-sysusers
[edit]
[-] htdbm
[edit]
[-] ps2pdfwr
[edit]
[-] pkla-admin-identities
[edit]
[-] paste
[edit]
[-] jsonpatch
[edit]
[-] comm
[edit]
[-] scsi_stop
[edit]
[-] groups
[edit]
[-] config_data
[edit]
[-] tracer
[edit]
[-] scalar
[edit]
[-] avinfo
[edit]
[-] setkeycodes
[edit]
[-] ccomps
[edit]
[-] lesspipe.sh
[edit]
[-] bwrap
[edit]
[-] gettext
[edit]
[-] pkla-check-authorization
[edit]
[-] sg_write_long
[edit]
[-] gsoelim
[edit]
[-] crb
[edit]
[-] nl-list-caches
[edit]
[-] traceroute6
[edit]
[-] elfedit
[edit]
[-] sha224sum
[edit]
[-] php
[edit]
[-] fprintd-list
[edit]
[-] flex++
[edit]
[-] glib-compile-schemas
[edit]
[-] hunspell
[edit]
[-] infocmp
[edit]
[-] busctl
[edit]
[-] lsgpio
[edit]
[-] psfxtable
[edit]
[-] tmpwatch
[edit]
[-] lua
[edit]
[-] cpapi3
[edit]
[-] pod2text
[edit]
[-] gpgtar
[edit]
[-] identify
[edit]
[-] post-grohtml
[edit]
[-] scl_source
[edit]
[-] lsinitrd
[edit]
[-] getopt
[edit]
[-] ld
[edit]
[-] desktop-file-edit
[edit]
[-] sprof
[edit]
[-] scp
[edit]
[-] zipsplit
[edit]
[-] pcre-config
[edit]
[-] bootctl
[edit]
[-] jsondiff-3.9
[edit]
[-] bzless
[edit]
[-] mailx
[edit]
[-] isosize
[edit]
[-] pathfix.py
[edit]
[-] yumdownloader
[edit]
[-] nl-neightbl-list
[edit]
[-] test
[edit]
[-] gunzip
[edit]
[-] gpg-connect-agent
[edit]
[-] gtar
[edit]
[-] eps2eps
[edit]
[-] chronyc
[edit]
[-] zfgrep
[edit]
[-] sasl2-sample-server
[edit]
[-] sg_write_same
[edit]
[-] prlimit
[edit]
[-] chacl
[edit]
[-] sg_turs
[edit]
[-] nop
[edit]
[-] newuidmap
[edit]
[-] team2bond
[edit]
[-] GET
[edit]
[-] unalias
[edit]
[-] fips-mode-setup
[edit]
[-] pydoc3.9
[edit]
[-] blkrawverify
[edit]
[-] wall
[edit]
[-] ps2pdf
[edit]
[-] uptime
[edit]
[-] neqn
[edit]
[-] odbcinst
[edit]
[-] montage
[edit]
[-] intel-speed-select
[edit]
[-] lastlog
[edit]
[-] nl-neigh-add
[edit]
[-] irqtop
[edit]
[-] b2sum
[edit]
[-] time
[edit]
[-] rview
[edit]
[-] c++filt
[edit]
[-] repoquery
[edit]
[-] dpkg-divert
[edit]
[-] icuinfo
[edit]
[-] w
[edit]
[-] automake
[edit]
[-] pstree
[edit]
[-] idn
[edit]
[-] rcsmerge
[edit]
[-] fincore
[edit]
[-] sshpass
[edit]
[-] psfgettable
[edit]
[-] lefty
[edit]
[-] rcsdiff
[edit]
[-] rpcinfo
[edit]
[-] ima-setup
[edit]
[-] lsphp
[edit]
[-] POST
[edit]
[-] gpg-wks-client
[edit]
[-] dd
[edit]
[-] convert
[edit]
[-] fc-cache
[edit]
[-] lsiio
[edit]
[-] troff
[edit]
[-] slabinfo
[edit]
[-] dnf
[edit]
[-] nl-link-name2ifindex
[edit]
[-] perl5.32.1
[edit]
[-] dbus-update-activation-environment
[edit]
[-] cut
[edit]
[-] scriptlive
[edit]
[-] nl-qdisc-add
[edit]
[-] imunify360-command-wrapper
[edit]
[-] miniterm-3.9.py
[edit]
[-] modutil
[edit]
[-] xzmore
[edit]
[-] strings
[edit]
[-] mpris-proxy
[edit]
[-] snice
[edit]
[-] rpcbind
[edit]
[-] apropos.man-db
[edit]
[-] domainname
[edit]
[-] ptx
[edit]
[-] gdbus-codegen
[edit]
[-] nl-cls-delete
[edit]
[-] logger
[edit]
[-] gcc-nm
[edit]
[-] [
[edit]
[-] sha512hmac
[edit]
[-] getent
[edit]
[-] rescan-scsi-bus.sh
[edit]
[-] libpng-config
[edit]
[-] whereis
[edit]
[-] jsonpatch-3.9
[edit]
[-] iostat
[edit]
[-] runcon
[edit]
[-] ftp
[edit]
[-] gst-stats-1.0
[edit]
[-] iconv
[edit]
[-] bzip2recover
[edit]
[-] osinfo-db-export
[edit]
[-] prtstat
[edit]
[-] scriptreplay
[edit]
[-] bzfgrep
[edit]
[-] sg_map
[edit]
[-] jsondiff-3
[edit]
[-] sg_sat_phy_event
[edit]
[-] rsync
[edit]
[-] newgrp
[edit]
[-] ea-php81
[edit]
[-] delv
[edit]
[-] sss_ssh_knownhostsproxy
[edit]
[-] xz
[edit]
[-] dbus-send
[edit]
[-] apxs
[edit]
[-] localedef
[edit]
[-] systemd-cat
[edit]
[-] grub2-script-check
[edit]
[-] tabs
[edit]
[-] btrecord
[edit]
[-] ps2pdf13
[edit]
[-] gneqn
[edit]
[-] ssltap
[edit]
[-] eqn
[edit]
[-] lsirq
[edit]
[-] sgm_dd
[edit]
[-] sum
[edit]
[-] patch
[edit]
[-] memcached-tool
[edit]
[-] cpio
[edit]
[-] soelim.groff
[edit]
[-] bzdiff
[edit]
[-] pinky
[edit]
[-] gcc
[edit]
[-] wdctl
[edit]
[-] audit2why
[edit]
[-] arch
[edit]
[-] nm-online
[edit]
[-] traceroute
[edit]
[-] scsi_start
[edit]
[-] zone2json
[edit]
[-] pkcheck
[edit]
[-] tload
[edit]
[-] jq
[edit]
[-] mac2unix
[edit]
[-] sieve-test
[edit]
[-] m4
[edit]
[-] freetype-config
[edit]
[-] pod2html
[edit]
[-] myisamchk
[edit]
[-] as
[edit]
[-] man-recode
[edit]
[-] switch_mod_lsapi
[edit]
[-] stat
[edit]
[-] vim
[edit]
[-] ps2ps
[edit]
[-] lto-dump
[edit]
[-] xzcat
[edit]
[-] gzip
[edit]
[-] clockdiff
[edit]
[-] run-parts
[edit]
[-] cl-linksafe-apply-group
[edit]
[-] png-fix-itxt
[edit]
[-] locate
[edit]
[-] fgrep
[edit]
[-] gtbl
[edit]
[-] nf-exp-delete
[edit]
[-] gio-querymodules-64
[edit]
[-] awk
[edit]
[-] ncurses6-config
[edit]
[-] x86_64-redhat-linux-gcc
[edit]
[-] semodule_package
[edit]
[-] nl-classid-lookup
[edit]
[-] zipgrep
[edit]
[-] head
[edit]
[-] gtroff
[edit]
[-] libtool
[edit]
[-] pkaction
[edit]
[-] sm3hmac
[edit]
[-] sha1sum
[edit]
[-] msgfmt.py
[edit]
[-] nss-policy-check
[edit]
[-] attr
[edit]
[-] sdiff
[edit]
[-] brotli
[edit]
[-] sw-engine
[edit]
[-] mysql_config_editor
[edit]
[-] bno_plot.py
[edit]
[-] fc-conflist
[edit]
[-] imunify-antivirus
[edit]
[-] fips-finish-install
[edit]
[-] tred
[edit]
[-] python-html2text
[edit]
[-] repo-graph
[edit]
[-] sccmap
[edit]
[-] x86_64-redhat-linux-gnu-pkg-config
[edit]
[-] firewall-offline-cmd
[edit]
[-] yum-debug-dump
[edit]
[-] geqn
[edit]
[-] dc
[edit]
[-] gtester-report
[edit]
[-] ncursesw6-config
[edit]
[-] pdf2ps
[edit]
[-] gvgen
[edit]
[-] python-config
[edit]
[-] dirmngr-client
[edit]
[-] update-gtk-immodules
[edit]
[-] sg_scan
[edit]
[-] dnf-3
[edit]
[-] mknod
[edit]
[-] pip3.9
[edit]
[-] mandb
[edit]
[-] lex
[edit]
[-] atq
[edit]
[-] nisdomainname
[edit]
[-] sg_sat_identify
[edit]
[-] nf-exp-add
[edit]
[-] pldd
[edit]
[-] bzmore
[edit]
[-] pfbtopfa
[edit]
[-] sscg
[edit]
[-] less
[edit]
[-] nsupdate
[edit]
[-] btreplay
[edit]
[-] twopi
[edit]
[-] lessecho
[edit]
[-] gs
[edit]
[-] base32
[edit]
[-] sg_rmsn
[edit]
[-] rlog
[edit]
[-] tracepath
[edit]
[-] msgfilter
[edit]
[-] nm
[edit]
[-] jobs
[edit]
[-] my_print_defaults
[edit]
[-] event_rpcgen.py
[edit]
[-] php74
[edit]
[-] gst-typefind-1.0
[edit]
[-] systemd-creds
[edit]
[-] bluetoothctl
[edit]
[-] pr
[edit]
[-] gxl2gv
[edit]
[-] gpg-error-config
[edit]
[-] dtrace
[edit]
[-] word-list-compress
[edit]
[-] jsonpointer-3
[edit]
[-] xdg-icon-resource
[edit]
[-] pipewire-avb
[edit]
[-] import
[edit]
[-] yat2m
[edit]
[-] sg_emc_trespass
[edit]
[-] zegrep
[edit]
[-] HEAD
[edit]
[-] lastcomm
[edit]
[-] systemd-dissect
[edit]
[-] yum-builddep
[edit]
[-] zone2sql
[edit]
[-] lslocks
[edit]
[-] lockfile
[edit]
[-] ul
[edit]
[-] diff3
[edit]
[-] lwp-dump
[edit]
[-] sedispol
[edit]
[-] tree
[edit]
[-] pipewire-vulkan
[edit]
[-] modulecmd
[edit]
[-] mysqladmin
[edit]
[-] update-desktop-database
[edit]
[-] ifnames
[edit]
[-] fc
[edit]
[-] rename
[edit]
[-] unzip
[edit]
[-] msgen
[edit]
[-] sg_get_config
[edit]
[-] sg_modes
[edit]
[-] libpng16-config
[edit]
[-] ps2ascii
[edit]
[-] pl2pm
[edit]
[-] kbd_mode
[edit]
[-] join
[edit]
[-] repodiff
[edit]
[-] unexpand
[edit]
[-] mysqlslap
[edit]
[-] json_pp
[edit]
[-] exiv2
[edit]
[-] reset
[edit]
[-] mdb_stat
[edit]
[-] i386
[edit]
[-] tty
[edit]
[-] chcon
[edit]
[-] tset
[edit]
[-] dnf4
[edit]
[-] apropos
[edit]
[-] defncopy
[edit]
[-] libwmf-fontmap
[edit]
[-] hexdump
[edit]
[-] xmlwf
[edit]
[-] mkfontscale
[edit]
[-] paperconf
[edit]
[-] gsbj
[edit]
[-] gdbus
[edit]
[-] psfstriptable
[edit]
[-] python3
[edit]
[-] wget
[edit]
[-] nf-ct-list
[edit]
[-] ps2pdf12
[edit]
[-] ipcs
[edit]
[-] sg_timestamp
[edit]
[-] pango-view
[edit]
[-] alias
[edit]
[-] printafm
[edit]
[-] systemd-detect-virt
[edit]
[-] osinfo-install-script
[edit]
[-] mogrify
[edit]
[-] du
[edit]
[-] gcov-tool
[edit]
[-] pygettext3.py
[edit]
[-] catchsegv
[edit]
[-] infotocap
[edit]
[-] pslog
[edit]
[-] arpaname
[edit]
[-] umask
[edit]
[-] nl-link-stats
[edit]
[-] hb-subset
[edit]
[-] gnroff
[edit]
[-] newgidmap
[edit]
[-] co
[edit]
[-] systemd-cgls
[edit]
[-] date
[edit]
[-] rpm2cpio
[edit]
[-] g13
[edit]
[-] pgrep
[edit]
[-] logresolve
[edit]
[-] aspell
[edit]
[-] wmf2fig
[edit]
[-] scsi_mandat
[edit]
[-] gdbm_dump
[edit]
[-] top
[edit]
[-] lsmd
[edit]
[-] mesg
[edit]
[-] aserver
[edit]
[-] trust
[edit]
[-] pf2afm
[edit]
[-] nl-list-sockets
[edit]
[-] ipcmk
[edit]
[-] make-dummy-cert
[edit]
[-] cyrusbdb2current
[edit]
[-] renice
[edit]
[-] mysql_config-64
[edit]
[-] getfacl
[edit]
[-] pkgconf
[edit]
[-] grub2-mklayout
[edit]
[-] scsi_readcap
[edit]
[-] dir
[edit]
[-] scl
[edit]
[-] pkmon
[edit]
[-] sestatus
[edit]
[-] uname26
[edit]
[-] at
[edit]
[-] sg_logs
[edit]
[-] findmnt
[edit]
[-] gtk-update-icon-cache
[edit]
[-] chown
[edit]
[-] ea-php82-pear
[edit]
[-] crc32
[edit]
[-] eject
[edit]
[-] sg_sat_read_gplog
[edit]
[-] systemd-escape
[edit]
[-] zipinfo
[edit]
[-] red
[edit]
[-] zdump
[edit]
[-] pipewire-pulse
[edit]
[-] whatis.man-db
[edit]
[-] perlivp
[edit]
[-] nl-cls-list
[edit]
[-] batch
[edit]
[-] ansible-vault
[edit]
[-] aclocal-1.16
[edit]
[-] stdbuf
[edit]
[-] ld.gold
[edit]
[-] sort
[edit]
[-] dbiprof
[edit]
[-] gcov
[edit]
[-] setleds
[edit]
[-] setup-nsssysinit
[edit]
[-] desktop-file-validate
[edit]
[-] ea-php83
[edit]
[-] pango-list
[edit]
[-] mount
[edit]
[-] fprintd-enroll
[edit]
[-] usbhid-dump
[edit]
[-] nmtui
[edit]
[-] timedatectl
[edit]
[-] piconv
[edit]
[-] msgfmt3.py
[edit]
[-] nl-class-list
[edit]
[-] shasum
[edit]
[-] cifsiostat
[edit]
[-] rnano
[edit]
[-] imunify360-agent
[edit]
[-] ea-php80-pecl
[edit]
[-] nc
[edit]
[-] pkexec
[edit]
[-] unflatten
[edit]
[-] sudoedit
[edit]
[-] mm2gv
[edit]
[-] xml2-config
[edit]
[-] teamnl
[edit]
[-] mv
[edit]
[-] sg_rep_zones
[edit]
[-] pkg-config
[edit]
[-] systemd-hwdb
[edit]
[-] read
[edit]
[-] whatis
[edit]
[-] links
[edit]
[-] osage
[edit]
[-] grub2-file
[edit]
[-] sha512sum
[edit]
[-] tdspool
[edit]
[-] systemd-run
[edit]
[-] pdns_control
[edit]
[-] shuf
[edit]
[-] mysqldumpslow
[edit]
[-] vdir
[edit]
[-] readelf
[edit]
[-] xdg-settings
[edit]
[-] telnet
[edit]
[-] git-shell
[edit]
[-] msginit
[edit]
[-] unxz
[edit]
[-] bg
[edit]
[-] nl-route-list
[edit]
[-] fusermount
[edit]
[-] dpkg-query
[edit]
[-] msguniq
[edit]
[-] turbostat
[edit]
[-] sg_zone
[edit]
[-] sievec
[edit]
[-] grops
[edit]
[-] gcc-ar
[edit]
[-] acyclic
[edit]
[-] gvmap.sh
[edit]
[-] who
[edit]
[-] sg_read_buffer
[edit]
[-] appstream-util
[edit]
[-] loadkeys
[edit]
[-] nl-qdisc-list
[edit]
[-] msgmerge
[edit]
[-] msgcmp
[edit]
[-] ipcrm
[edit]
[-] tac
[edit]
[-] sar
[edit]
[-] git-upload-archive
[edit]
[-] gio
[edit]
[-] prune
[edit]
[-] sleep
[edit]
[-] whiptail
[edit]
[-] im360-k8s-syncer
[edit]
[-] uapi
[edit]
[-] mkfontdir
[edit]
[-] bcomps
[edit]
[-] mysql_upgrade
[edit]
[-] ex
[edit]
[-] lesskey
[edit]
[-] systemd-analyze
[edit]
[-] dnstap-read
[edit]
[-] python
[edit]
[-] resizecons
[edit]
[-] sieve-filter
[edit]
[-] lsusb.py
[edit]
[-] ps2epsi
[edit]
[-] repoclosure
[edit]
[-] seq
[edit]
[-] base64
[edit]
[-] mysql_config
[edit]
[-] make
[edit]
[-] glib-gettextize
[edit]
[-] script
[edit]
[-] cpapi2
[edit]
[-] ssh-copy-id
[edit]
[-] gresource
[edit]
[-] gpg2
[edit]
[-] fallocate
[edit]
[-] semodule_unpackage
[edit]
[-] sg_raw
[edit]
[-] sieve-dump
[edit]
[-] pstree.x11
[edit]
[-] systemd-cgtop
[edit]
[-] pdnsutil
[edit]
[-] pathfix3.9.py
[edit]
[-] last
[edit]
[-] unicode_start
[edit]
[-] gpg-error
[edit]
[-] sha224hmac
[edit]
[-] gdbm_load
[edit]
[-] nmtui-connect
[edit]
[-] vmstat
[edit]
[-] symlinks
[edit]
[-] ansible-inventory
[edit]
[-] cmsutil
[edit]
[-] loadunimap
[edit]
[-] sg_rep_pip
[edit]
[-] gdk-pixbuf-thumbnailer
[edit]
[-] unpigz
[edit]
[-] jsonpatch-3
[edit]
[-] nl-tctree-list
[edit]
[-] printenv
[edit]
[-] skill
[edit]
[-] hb-shape
[edit]
[-] perldoc
[edit]
[-] zforce
[edit]
[-] dbus-monitor
[edit]
[-] install
[edit]
[-] precat
[edit]
[-] systemd-mount
[edit]
[-] which
[edit]
[-] sg_readcap
[edit]
[-] tsort
[edit]
[-] sg_luns
[edit]
[-] linux-boot-prober
[edit]
[-] glib-mkenums
[edit]
[-] zipdetails
[edit]
[-] pk12util
[edit]
[-] getconf
[edit]
[-] gtk-query-immodules-2.0-64
[edit]
[-] sg_prevent
[edit]
[-] envsubst
[edit]
[-] sg_stpg
[edit]
[-] btmon
[edit]
[-] desktop-file-install
[edit]
[-] sg_requests
[edit]
[-] curl
[edit]
[-] sha384hmac
[edit]
[-] gtester
[edit]
[-] bzgrep
[edit]
[-] gslj
[edit]
[-] iusql
[edit]
[-] ping
[edit]
[-] nl-cls-add
[edit]
[-] rmdir
[edit]
[-] mkdir
[edit]
[-] systemd-firstboot
[edit]
[-] pkill
[edit]
[-] nl-link-list
[edit]
[-] mysql_migrate_keyring
[edit]
[-] zcmp
[edit]
[-] mcookie
[edit]
[-] find-repos-of-install
[edit]
[-] fuse2fs
[edit]
[-] split
[edit]
[-] update-mime-database
[edit]
[-] pic
[edit]
[-] sg_write_buffer
[edit]
[-] sgp_dd
[edit]
[-] fold
[edit]
[-] crontab
[edit]
[-] showconsolefont
[edit]
[-] grub2-mount
[edit]
[-] chvt
[edit]
[-] rsvg-convert
[edit]
[-] ngettext
[edit]
[-] find
[edit]
[-] showkey
[edit]
[-] libtoolize
[edit]
[-] yum
[edit]
[-] tic
[edit]
[-] distro
[edit]
[-] lastb
[edit]
[-] osinfo-query
[edit]
[-] yes
[edit]
[-] hardlink
[edit]
[-] fgconsole
[edit]
[-] mysql
[edit]
[-] dwp
[edit]
[-] authselect
[edit]
[-] dconf
[edit]
[-] chage
[edit]
[-] usleep
[edit]
[-] whoami
[edit]
[-] egrep
[edit]
[-] splain
[edit]
[-] 2to3
[edit]
[-] rpm2archive
[edit]
[-] sg_map26
[edit]
[-] hostid
[edit]
[-] unzipsfx
[edit]
[-] exempi
[edit]
[-] rkhunter
[edit]
[-] cloud-id
[edit]
[-] scsi_satl
[edit]
[-] pwd
[edit]
[-] gslp
[edit]
[-] setvtrgb
[edit]
[-] imunify-agent-proxy
[edit]
[-] pidstat
[edit]
[-] mdb_load
[edit]
[-] lsblk
[edit]
[-] fc-cache-64
[edit]
[-] acpi_listen
[edit]
[-] pip-3
[edit]
[-] wc
[edit]
[-] xdg-open
[edit]
[-] jsonschema
[edit]
[-] cal
[edit]
[-] sg_read
[edit]
[-] powernow-k8-decode
[edit]
[-] sftp
[edit]
[-] pinfo
[edit]
[-] lsphp74
[edit]
[-] nf-exp-list
[edit]
[-] catman
[edit]
[-] sg_reset
[edit]
[-] namei
[edit]
[-] tsql
[edit]
[-] basenc
[edit]
[-] gencat
[edit]
[-] ncat
[edit]
[-] id
[edit]
[-] setsid
[edit]
[-] gsdj
[edit]
[-] xsubpp
[edit]
[-] sfdp
[edit]
[-] factor
[edit]
[-] blktrace
[edit]
[-] h2ph
[edit]
[-] nl-rule-list
[edit]
[-] sg_inq
[edit]
[-] info
[edit]
[-] checkpolicy
[edit]
[-] nohup
[edit]
[-] p11-kit
[edit]
[-] objcopy
[edit]
[-] tclsh
[edit]
[-] mysqld_pre_systemd
[edit]
[-] imunify-service
[edit]
[-] htpasswd
[edit]
[-] rvim
[edit]
[-] conjure
[edit]
[-] luac
[edit]
[-] cpupower
[edit]
[-] x86_64-redhat-linux-gcc-11
[edit]
[-] ps2pdf14
[edit]
[-] ptar
[edit]
[-] hesinfo
[edit]
[-] nl-addr-list
[edit]
[-] flatpak-bisect
[edit]
[-] taskset
[edit]
[-] setup-nsssysinit.sh
[edit]
[-] automake-1.16
[edit]
[-] mysqlshow
[edit]
[-] ypdomainname
[edit]
[-] nf-ct-events
[edit]
[-] getkeycodes
[edit]
[-] debuginfod-find
[edit]
[-] zgrep
[edit]
[-] dpkg-realpath
[edit]
[-] pwdx
[edit]
[-] cpan-mirrors
[edit]
[-] x86_64-redhat-linux-g++
[edit]
[-] autoupdate
[edit]
[-] ispell
[edit]
[-] vimdiff
[edit]
[-] nl-qdisc-delete
[edit]
[-] systemd-tty-ask-password-agent
[edit]
[-] sync
[edit]
[-] bzcmp
[edit]
[-] sg_test_rwbuf
[edit]
[-] nl-route-get
[edit]
[-] vdoformat
[edit]
[-] fc-scan
[edit]
[-] git
[edit]
[-] systemd-notify
[edit]
[-] cp
[edit]
[-] gpgconf
[edit]
[-] gtk-query-immodules-3.0-64
[edit]
[-] msgcomm
[edit]
[-] bashbug-64
[edit]
[-] flock
[edit]
[-] nl-fib-lookup
[edit]
[-] flatpak-coredumpctl
[edit]
[-] notify-send
[edit]
[-] mmdblookup
[edit]
[-] sg_rdac
[edit]
[-] sg_ident
[edit]
[-] gpgsplit
[edit]
[-] tar
[edit]
[-] ssh
[edit]
[-] xzfgrep
[edit]
[-] coredumpctl
[edit]
[-] mpstat
[edit]
[-] nl-util-addr
[edit]
[-] gpio-event-mon
[edit]
[-] ed
[edit]
[-] host
[edit]
[-] signver
[edit]
[-] locale
[edit]
[-] html2text
[edit]
[-] crlutil
[edit]
[-] gsdj500
[edit]
[-] kvm_stat
[edit]
[-] sg_verify
[edit]
[-] circo
[edit]
[-] wmf2eps
[edit]
[-] login
[edit]
[-] sg_sat_set_features
[edit]
[-] openssl
[edit]
[-] dot
[edit]
[-] s-nail
[edit]
[-] sg_start
[edit]
[-] gpio-watch
[edit]
[-] grub2-kbdcomp
[edit]
[-] enc2xs
[edit]
[-] pflags
[edit]
[-] gtk-launch
[edit]
[-] dijkstra
[edit]
[-] nl-class-add
[edit]
[-] dpkg-trigger
[edit]
[-] ulockmgr_server
[edit]
[-] ibd2sdi
[edit]
[-] sg_unmap
[edit]
[-] logname
[edit]
[-] osinfo-db-path
[edit]
[-] python3.9
[edit]
[-] protoc-c
[edit]
[-] canberra-boot
[edit]
[-] sg_referrals
[edit]
[-] pydoc3
[edit]
[-] wpctl
[edit]
[-] jsonpointer-3.9
[edit]
[-] bison
[edit]
[-] killall
[edit]
[-] more
[edit]
[-] tracker3
[edit]
[-] clear
[edit]
[-] python3.9-x86_64-config
[edit]
[-] sudo
[edit]
[-] mysql_ssl_rsa_setup
[edit]
[-] netstat
[edit]
[-] msgcat
[edit]
[-] procmail
[edit]
[-] arping
[edit]
[-] dracut
[edit]
[-] soelim
[edit]
[-] getfattr
[edit]
[-] encguess
[edit]
[-] sed
[edit]
[-] pathchk
[edit]
[-] toe
[edit]
[-] nl-class-delete
[edit]
[-] cksum
[edit]
[-] cpan
[edit]
[-] nl-route-add
[edit]
[-] streamzip
[edit]
[-] prezip
[edit]
[-] zsoelim
[edit]
[-] pygettext3.9.py
[edit]
[-] page_owner_sort
[edit]