Intereting Posts
DNS неожиданно разбился в Ubuntu VirtualBox SMART говорит, что отказ диска неизбежен из-за плохих блоков, что мне нужно сделать? Зачем мне устанавливать DNS-сервер на моем сервере Ubuntu? Как узнать характеристики напряжения в моей памяти? grub-install терпит неудачу после обновления с 12.04 до 14.04 (grub-pc сломан) Нет Unity bar, нет оконной панели на Saucy и Trusty Как изменить обои-предпочтения от nemo до nautilus Журнал активности Gnome не показывает недавно использованные файлы Как проверить версию установленного вина и удалить его? Почему Disk Utility (Palimpsest) по умолчанию, а не GParted? Создание переключателя «deadman» с использованием Ubuntu для отключения экземпляра EC2 Один SSD, два компьютера (с разными видеокартами). Лучший подход для видеодрайверов? Где я могу найти набор значков для Unity? В XUbuntu есть черные нечитаемые вкладки в приложениях GTK, такие как gEdit HTML-тег выделяет альтернативу для редактора Geany на Ubuntu 14.04

ps aux для длиннозначных имен пользователей показывает знак плюса

Я пытаюсь получить вывод из ps aux чтобы он выглядел так:

 giovanni 28331 4381 0 15:43 ? 00:00:00 sshd: giovanni@pts/1 giovanni 28346 28331 0 15:43 pts/1 00:00:00 -bash giovanni 28646 28346 0 15:43 pts/1 00:00:00 ./example.sh 

Однако выполнение этой команды в Ubuntu 14.04 LTS дает следующее:

 giovan+ 28331 4381 0 15:43 ? 00:00:00 sshd: giovanni@pts/1 giovan+ 28346 28331 0 15:43 pts/1 00:00:00 -bash giovan+ 28646 28346 0 15:43 pts/1 00:00:00 ./example.sh 

Итак, как я могу удалить эти плюсовые знаки и дать команду команде показать мне все имя пользователя?

Согласно man ps , ps -aux – «видеть каждый процесс в системе с использованием синтаксиса BSD ». Я не нашел способа установить определяемый пользователем формат для вывода вывода.

Однако в стандартном синтаксисе вы можете установить ширину столбца, например: user:<width> . Следующее должно предоставить вам ту же информацию, установив ширину столбца имени пользователя до 20 (или любое другое значение):

 ps axo user:20,pid,pcpu,pmem,vsz,rss,tty,stat,start,time,comm 

вывод с (очень) длинным именем:

 USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND ......................................................................................... root 3826 0.0 0.1 77828 4788 ? Ss 08:15:55 00:00:00 cupsd lp 3831 0.0 0.0 63156 2224 ? S 08:15:56 00:00:00 dbus lp 3832 0.0 0.0 63156 2220 ? S 08:15:56 00:00:00 dbus root 4822 1.7 5.1 446964 210416 tty8 Ss+ 08:38:00 00:03:27 Xorg root 4923 0.0 0.1 174652 4412 ? Sl 08:38:02 00:00:00 lightdm tantemarievanhier 5181 0.0 0.1 544216 4796 ? Sl 08:38:08 00:00:00 gnome-keyring-d tantemarievanhier 5228 0.0 0.0 40492 2740 ? Ss 08:38:08 00:00:00 init tantemarievanhier 5369 0.0 0.0 41816 3064 ? Ss 08:38:09 00:00:02 dbus-daemon tantemarievanhier 5376 0.0 0.0 10616 316 ? Ss 08:38:09 00:00:00 ssh-agent 

установка ширины столбца до 7:

 ps axo user:7,pid,pcpu,pmem,vsz,rss,tty,stat,start,time,comm USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND ......................................................................................... tantem+ 6623 0.0 0.0 287228 3820 ? Sl 08:39:00 00:00:00 unity-webapps-s tantem+ 6679 0.0 0.4 676856 18640 ? Sl 08:39:20 00:00:00 update-notifier tantem+ 6721 0.0 0.1 541224 7056 ? Sl 08:40:20 00:00:00 deja-dup-monito tantem+ 6743 0.0 0.5 810616 21888 ? Sl 08:41:55 00:00:00 unity-scope-hom tantem+ 6758 0.0 0.2 717256 10352 ? Sl 08:41:55 00:00:00 unity-files-dae tantem+ 6760 0.0 0.5 607208 22920 ? Sl 08:41:55 00:00:00 unity-scope-loa tantem+ 6784 0.0 0.2 350676 9060 ? Sl 08:41:56 00:00:00 unity-music-dae 

По соображениям удобства вы можете добавить следующую строку в ~/.bashrc :

 alias psaux='ps axo user:20,pid,pcpu,pmem,vsz,rss,tty,stat,start,time,comm' 

так что ps aux является «нормальным» выходом, а psaux дает вам полную версию.

Заметка:

Вы также можете показать полное имя, переместив столбец имен в последнюю позицию:

 ps axo pid,pcpu,pmem,vsz,rss,tty,stat,start,time,comm,user 

дает:

  PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND USER 5181 0.0 0.1 544216 4548 ? Sl 08:38:08 00:00:00 gnome-keyring-d tantemarievanhier 5228 0.0 0.0 40492 2668 ? Ss 08:38:08 00:00:00 init tantemarievanhier 5369 0.0 0.0 41816 3032 ? Ss 08:38:09 00:00:07 dbus-daemon tantemarievanhier 

Как отобразить вывод, автоматически устанавливая ширину столбца USER

Существует еще один, более утонченный способ установки ширины столбца USER. Если мы запустим команду с очень большим значением ширины столбца USER, мы можем использовать небольшой скрипт для изменения строк, регулируя ширину столбца до самого длинного имени пользователя.

Сделать это

  • Скопируйте сценарий ниже, вставьте его в пустой файл, сохраните его как psaux_alternative.py .
  • Сделать его исполняемым
  • Добавьте строку к вашему ~/.bashrc :

     alias psaux='/path/to/psaux_alternative.py` 

Затем запуск psaux в окне терминала отобразит результат с автоматической шириной столбца USER.

Сценарий:

 #!/usr/bin/env python3 import subprocess command = "ps axo user:30,pid,pcpu,pmem,vsz,rss,tty,stat,start,time,comm" l = subprocess.check_output(["/bin/bash", "-c", command]).decode("utf-8").split("\n") minlen = sorted(set([30-len(item.split(" ")[0]) for item in l]))[0] for line in l: print(line[:30-minlen]+line[30:]) 

Я столкнулся с той же проблемой. В руководстве ps рассказывается о WIDE-WCHAN-COLUMN. Умная попытка с параллельным формированием WIDE-RUSER-COLUMN закончилась желаемым результатом:

 $ ps -e -o ruser=WIDE-RUSER-COLUMN