Useful CLI tools (bash) for Arch Linux administration
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

43 lines
1.4 KiB

  1. #!/usr/bin/env bash
  2. #
  3. # psns - List processes, their users and PIDs and their namespace name in current Linux namespaces
  4. #
  5. # Copyright (C) 2021 Pekka Helenius <pekka.helenius@fjordtek.com>
  6. #
  7. # This program is free software; you can redistribute it and/or modify
  8. # it under the terms of the GNU General Public License as published by
  9. # the Free Software Foundation; either version 2 of the License, or
  10. # (at your option) any later version.
  11. #
  12. # This program is distributed in the hope that it will be useful,
  13. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  15. # GNU General Public License for more details.
  16. #
  17. # You should have received a copy of the GNU General Public License
  18. # along with this program. If not, see <http://www.gnu.org/licenses/>.
  19. #####################################
  20. NAMESPACES=( $(ls /run/netns) )
  21. if [[ ${1} =~ ^(\-h|\-\-help)$ ]]; then
  22. echo "
  23. List processes in non-default namespaces.
  24. "
  25. exit 0
  26. fi
  27. printf "%-25s%-20s%-20s%s%-15s%-30s%s\n" "USER" "PID" "COMMAND" "NAMESPACE"
  28. echo "--------------------------------------------------------------------------"
  29. for namespace in ${NAMESPACES[@]}; do
  30. for pid in $(sudo ip netns pids ${namespace}); do
  31. printf "%-25s%-20s%-20s%s%-15s%-30s%s\n" $(ps -q ${pid} -o uname,pid,comm= | tail -1) ${namespace}
  32. done
  33. done
  34. echo "To alter a process, use: $(killns)"