[112428] Я думаю, что ошибки, которые вы видите, относятся к подсистеме Changelog APT. Вы можете либо отключить его, либо удалить все вместе.
Также можно временно сделать это через переменную окружения перед выполнением команды [113082]apt-get...[113083]:
2. чтобы удалить [12169]Попробуйте выполнить любую из этих операций и повторите команду, чтобы проверить, все ли чисто.[112439].
Можно использовать переключатель -o
для указания формата вывода:
$ ps -eo args
На главной странице :
Команда со всеми ее аргументами в качестве последовательности. Могут быть показаны изменения аргументов. [...]
Для выбора конкретного PID можно также использовать переключатель -p
:
$ ps -p [PID] -o args
pidof
также может использоваться для переключения с имени процесса на PID, что позволяет использовать -p
с именем:
$ ps -p $(pidof dhcpcd) -o args
Для этого можно также использовать grep
(в этом случае необходимо добавить переключатель -e
):
$ ps -eo args | grep dhcpcd | head -n -1
GNU ps также позволит удалить заголовки (конечно, это не обязательно при использовании grep
):
$ ps -p $(pidof dhcpcd) -o args --no-headers
В других системах, вы можете направить в AWK или sed:
$ ps -p $(pidof dhcpcd) -o args | awk 'NR > 1'
$ ps -p $(pidof dhcpcd) -o args | sed 1d
Edit: если вы хотите поймать эту строку в переменную, просто используйте $ (...)
как обычно:
$ CMDLINE=$(ps -p $(pidof dhcpcd) -o args --no-headers)
или с grep
:
$ CMDLINE=$(ps -eo args | grep dhcpcd | head -n -1)
-121--8932- можно использовать ps -eaf | grep 1234
.
$ ps -eaf | grep 28865
saml 28865 9661 0 03:06 pts/2 00:00:00 bash -c sleep 10000; while [ 1 ];do echo hi;sleep 10;done
saml 28866 28865 0 03:06 pts/2 00:00:00 sleep 10000
ПРИМЕЧАНИЕ: ps
Busybox не включает переключатели - eaf
, как показано выше, из типичного ps
, который входит в состав большинства Linuxes, однако ps
Busybox показывает, что выглядит очень похожим на результат из приведенного примера. Вы можете установить Busybox на большинстве Linuxes и запустить его так:
$ busybox ps
852 root 0:00 /sbin/auditd -n
855 root 0:01 /sbin/audispd
857 root 0:00 /usr/sbin/sedispatch
866 root 0:00 /usr/sbin/alsactl -s -n 19 -c -E ALSA_CONFIG_PATH=/etc/alsa/alsactl.conf --initfile=/lib/alsa/init/00main rdaemon
867 root 0:00 /usr/libexec/bluetooth/bluetoothd
869 root 0:01 {firewalld} /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
871 root 0:32 /usr/libexec/accounts-daemon
873 rtkit 0:05 /usr/libexec/rtkit-daemon
875 root 0:00 /usr/sbin/ModemManager
876 avahi 0:03 avahi-daemon: running [dufresne.local]
878 root 0:54 /usr/sbin/irqbalance --foreground
884 root 0:00 /usr/sbin/smartd -n -q never
886 avahi 0:00 avahi-daemon: chroot helper
891 chrony 0:01 /usr/sbin/chronyd
892 root 0:01 /usr/lib/systemd/systemd-logind
893 dbus 1:28 /bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
Вы также можете просмотреть файл cmdline
, который каждый PID имеет в /proc/< pid >
.
$ cat /proc/28865/cmdline
bash-csleep 10000; while [ 1 ];do echo hi;sleep 10;done
Но обратите внимание, что в нем отсутствует интервал. Это связано с тем, что в этом файле используется символ NUL для разделения аргументов командной строки. Но не беспокойся, их можно убрать.
$ tr '\0' ' ' </proc/28865/cmdline
bash -c sleep 10000; while [ 1 ];do echo hi;sleep 10;done
Если я правильно понимаю, вы ищете
perl -lane 'push @{$k{$F[0]}},$F[1];
END{$"=", ";print "$_ @{$k{$_}}" for sort keys(%k)}' file
Нет причин явно разделять строку, флаг -a
уже делает это для вас. Каждая входная строка будет разделена на массив @ F
. Итак, здесь мы создадим хэш % k
, чьи ключи являются 1-м полем и чьи значения являются соответствующими списками 2-го поля. Затем в конце отсортируем хэш-ключи, установим разделитель списка ( $ "
) на , [космос]
и распечатаем каждый ключ и соответствующий ему список значений.
Другой perl
:
$ perl -anle '
push @{$h{$F[0]}}, $F[1];
END {
for (sort {$a <=> $b} keys %h) {
print "$_ ", join(", ", @{$h{$_}});
}
}
' file
1 foo, foobar
2 bar, barbar
3 apple, mango
4 banana
5 orange
Объяснение
Мы создаем хэш $h
, ключами которого являются значение $F[0]
. Каждое значение хэша является ссылкой на массив. При обработке каждой строки мы добавляем значение второго поля $F[1]
к ссылке на массив push @{$h{$F[0]}}, $F[1]
.
После обработки всех строк сортируем ключи $h
(сортируем {$a <=> $b} ключи %h
), присоединяем каждый массив со ссылкой на строку (join(", ", @{$h{$_}})
), вывешиваем каждый ключ, соответствующий строке join.