Как диагностировать медленный вход в систему gnome на rhel7

Хороший вопрос!

Вот мой простой bashскрипт для этого:

for file in *.jpg; do 
    afile=( ${file#*)} ); 
    echo mv "$file" "${file%%#*}$(echo $(sort<(printf "%s\n" "${afile[@]%%.*}"))).jpg";
done

Пояснение:

  • Вafile=( ${file#*)} );:мы преобразовываем строку в массив. В этом состоянии оболочка выполняет разбиение слов пробелами, если вы не берете строку в кавычки.

    В${file#*)}(сократить -до -до -первого -префикса):мы удаляем все от начала строки до первого ), увиденного с помощью shell parameter expansion, как это будет результат #wallpaper #4k #googleimages.jpgс учетомfile="Sunrise (2) #wallpaper #4k #googleimages.jpg"

  • В${file%%#*}(сократить -до -до -последнего -суффикса);зачистка начинается с конца до начала строки до последнего #увиденного. это приведетSunrise (2)

  • В${afile[@]%%.*}(сократить -вверх -до -последнего -суффикса):так же, как указано выше, удаление начала с конца до начала строки (здесь в каждом индексированном массиве )до последнего .видели. это даст #wallpaper #4k #googleimages, мы также могли бы использовать ${afile[@]%.*}лучше!

  • Вprintf "%s\n" "${afile[@]%%.*}":мы печатаем элементы массива с символами новой строки ([@], используемыми для индексированного массива ), (почему с новыми строками? Потому что мы будем их сортировать, и мы должны разделить элементы на новые строки)

  • В$(sort<(printf "%s\n" "${afile[@]%%.*}")):мы сортируем элементы (или теги ).

  • В$(echo $(sort<(printf "%s\n" "${afile[@]%%.*}"))):то же самое, что и выше, но мы использовали дополнительную команду echoдля сбора отсортированных элементов в один линейный.

    возможно то же самое с использованием двойного xargsподобного ... |xargs -n1| sort | xargs.
    Пожалуйста, посмотрите пример ниже, чтобы лучше понять этот шаг:

    echo -e "C\n4\nB" |sort
    4
    B
    C
    echo $(echo -e "C\n4\nB" |sort)
    4 B C
    

Наконец, в конце, mvкоманда переименовывает $fileв измененное имя.

Ps:удалите echo mv...перед mv, чтобы выйти из пробного -прогона и выполнить фактическое переименование.

1
05.09.2019, 13:50
1 ответ

Приведенной выше информации недостаточно для понимания основной причины проблемы. Один из подходов к этому я бы попробовал:

Войдите в текстовую консоль как ваш пользователь. Делать

for((;;)); do ps aux --forest; sleep 0.5s; done >audit

Наблюдайте за выполняемыми процессами. Найдите различия, относящиеся к вашей сессии, должно быть что-то, что не изменилось за все эти минуты. Посмотрите на этот конкретный сценарий или двоичный файл и определите причину.

0
28.01.2020, 00:06

Теги

Похожие вопросы