From 2e8e08c631db931baa0b7e11ef28e304f5a3db80 Mon Sep 17 00:00:00 2001 From: Pekka Helenius Date: Fri, 19 Feb 2021 13:49:21 +0200 Subject: [PATCH] Add Linux namespace commands --- tools/killns.sh | 22 ++++++++++++++++++++++ tools/psns.sh | 24 ++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 tools/killns.sh create mode 100644 tools/psns.sh diff --git a/tools/killns.sh b/tools/killns.sh new file mode 100644 index 0000000..5d3aa45 --- /dev/null +++ b/tools/killns.sh @@ -0,0 +1,22 @@ +#!/bin/env sh + +if [[ ${1} =~ ^(\-h|\-\-help)$ ]] || [[ -z ${1} ]]; then + echo " +Send a signal to a process in specified namespace. + +usage: $(basename $0) +" + exit 0 +fi + +signal="${1}" +processname="${2}" +namespace="${3}" + +for pid in $(sudo ip netns pids ${namespace}); do + + if [[ $(sudo ps -q $pid -o command) =~ ^.*${processname}.* ]]; then + sudo ip netns exec ${namespace} kill -${signal} ${pid} + fi + +done diff --git a/tools/psns.sh b/tools/psns.sh new file mode 100644 index 0000000..0166571 --- /dev/null +++ b/tools/psns.sh @@ -0,0 +1,24 @@ +#!/bin/env sh + +NAMESPACES=( $(ls /run/netns) ) + +if [[ ${1} =~ ^(\-h|\-\-help)$ ]]; then + echo " +List processes in non-default namespaces. +" + exit 0 +fi + +printf "%-25s%-20s%-20s%s%-15s%-30s%s\n" "USER" "PID" "COMMAND" "NAMESPACE" +echo "--------------------------------------------------------------------------" + +for namespace in ${NAMESPACES[@]}; do + + for pid in $(sudo ip netns pids ${namespace}); do + + printf "%-25s%-20s%-20s%s%-15s%-30s%s\n" $(ps -q ${pid} -o uname,pid,comm= | tail -1) ${namespace} + done + +done + +echo "To alter a process, use: $(killns)"