gnome-shell
действительно начинается Xwayland
с подключения к журналу. Сообщения отображаются в журнале с префиксом вроде org.gnome.Shell.desktop[3494]:
, где 3494 — это PID процесса gnome -shell .
См. « Что означает «org.gnome.Shell.desktop[1711] :» в журнале systemd? '.
Это может сбивать с толку, потому что gnome-shell
ведет журнал одним и тем же способом и может быть очень шумным; тогда как Xwayland может быть очень тихим. Я вижу, что Xwayland не регистрирует никаких сообщений о запуске. Я вижу только сообщения об ошибках.
Вы можете попробовать поискать сообщения Xwayland с подвохом по строкам
$ journalctl --since=-1month | grep ': [(]..[)] ' | grep -v gdm-x-session
или
$ journalctl --since=-1month \
| grep -E '[(]([^0-9^a-z]){2}[)]' \
| grep -v gdm-x-session
Mar 18 21:15:45 alan-laptop org.gnome.Shell.desktopPATH
: (EE) failed to read Wayland events: Connection reset by peer
Mar 18 21:48:01 alan-laptop org.gnome.Shell.desktop[3012]: (EE) failed to read Wayland events: Broken pipe
Mar 18 21:50:06 alan-laptop org.gnome.Shell.desktop[2124]: (EE) failed to read Wayland events: Connection reset by peer
Mar 19 11:03:43 alan-laptop org.gnome.Shell.desktop[29640]: (EE) failed to read Wayland events: Broken pipe
А sed
версия
find. -name "file*" -exec sh -c '
echo $(sort -nk1 "$1" | sed -n "1{s/.*//p}" )" (from "${1##*/}")" ' sh {} \; | sort -nk1 > output.txt; cat output.txt
sort
при необходимости заполнение выходного файла и добавление имен файлов
IIUC, вы хотите, чтобы это было в каждом файле:
awk 'NF' FILE | sort -n -k1 - | awk 'NR==1{print $1}' >> file_NEW
Начальный awk 'NF' FILE
нужен, если у вас был пустой бланк строки во входных файлах. Вы не указали, хотите ли вы запустить эту команду для всех файлов в данный каталог рекурсивно или не -рекурсивно или только в некоторых файлах с определенными образцами в их именах. В любом случае, вы можете использовать find
для сделай это:
find. -name "FILE*" -exec sh -c 'awk "NF" FILE | sort -n -k1 - | awk "NR==1{print \$1}" >> file_NEW' sh {} \;
В этом случае приведенная выше команда выполняется для всех файлов в заданном каталог, имя которого начинается с FILE
.
Также обратите внимание, что это не обязательно даст вам отсортированный список в вывод file_NEW
, потому что find
будет слепо запускать все после -exec
в каждом найденном файле.
Чтобы найти минимальное значение, мы можем использовать следующую команду
Используйте приведенную ниже команду для каждого файла
awk 'NR==1{sum=$1}($1 < sum){sum=$1}END{print sum}' filename >> outputfile
Проверено, работает нормально
awk '{print $1 "\t(from " FILENAME ")"}' file* | sort -k1,1n | awk -F'\t' '!seen[$2]++'
Описанное выше будет надежно и эффективно работать со всеми вашими входными файлами одновременно с использованием стандартных инструментов UNIX, например.:
$ cat file1
25 104.601 0.5
24.8488 104 0.5
24.5341 103 0.5
24.1844 102 0.5
24.1568 101 0.5
24.1568 100 0.5
24.1844 99 0.5
24.5341 98 0.5
$ cat file2
75 104.601 0.5
74.8488 104 0.5
74.5341 103 0.5
74.1844 102 0.5
74.1568 101 0.5
74.1568 100 0.5
74.1844 99 0.5
74.5341 98 0.5
$ awk '{print $1 "\t(from " FILENAME ")"}' file{1,2} | sort -k1,1n | awk -F'\t' '!seen[$2]++'
24.1568 (from file1)
74.1568 (from file2)
, но предполагается, что ни одно из имен ваших файлов не содержит символов табуляции или новой строки. Если они содержат вкладки, их можно легко настроить :
.awk '{print $1 "\t(from " FILENAME ")"}' file* |
sort -k1,1n |
awk '{f=$0; sub(/[^\t]*\t/,"",f)} !seen[f]++'
но если они также содержат символы новой строки, вам понадобятся инструменты GNU для размещения\0
(NUL )терминаторов:
awk -v ORS='\0' '{print $1 "\t(from " FILENAME ")"}' file* |
sort -z -k1,1n |
awk -v RS='\0' '{f=$0; sub(/[^\t]*\t/,"",f)} !seen[f]++'