Найти и снять отметку с файлов с помощью сравнения строк?

Наверное, нельзя. Логика

cpulimit довольно проста, она занимает pid процесса и просто посылает свой сигнал kill -STOP $ PID , затем kill -CONT $ PID , и снова, и снова, и снова, и снова......

И измерение загрузки ЦП для вычисления задержки между STOP и CONT.

В вашем случае pstree сложного bash-script займет N * x экранов консоли.

Я могу предложить вам еще один метод понижения загрузки процессора любого bash-скрипта или даже двоичного исполняемого файла.

1) приятно - процесс принятия и увеличения или уменьшения приоритета с -20 (Наивысший приоритет) до 20 (Наименьший приоритет). Вероятно, в слишком низком диапасоне, именно поэтому, появляются ещё два утила и крючки ядра:

2) ionice - может быть, это второе поколение nice . Можно разделить процессы по приоритету от 0 (наименьший приоритет) до 7 (наивысший приоритет). Кроме того, можно разделить процессы по классам, в режиме реального времени (самый высокий), наилучшие усилия (средний), в режиме ожидания (самый низкий) и нет (по умолчанию).

3) chrt - самая высокая вещь, которую я когда-либо встречал, она похожа на cpulimit своей силой и доминированием на процессе. Здесь также можно соответствовать классам приоритета, простоя , реального времени , fifo , пакета и т.д. И диапасон приоритетов очень большой, от 1 до 99.

Например, вы можете запустить один огромный процесс с помощью chrt -r -p 99 process - и он съест все ваши ресурсы.

Точно так же любой огромный демон может работать в "фоновом режиме" с процессом chrt -r -p 0 - он будет ждать всех остальных, пока ресурсы системы будут заняты.

В любом случае, я настоятельно рекомендую вам прочитать man chrt и man ionice перед началом работы.

Например, я использую rtorrent для p2p. Это наименее приоритетная задача для моей системы, тогда я запускаю ее таким образом:

nice -n 20 chrt -i 0 ionice -c3 /usr/bin/rtorrent

Или, вы можете взять крючки и хаки путь. И напиши свой cpulimit_wrapper сценарий. Например:

# cat bash_script.sh 
#!/bin/bash


while sleep 0; do
        find /

        dd if=/dev/random of=/tmp/random.bin bs=1M count=1000
done

плюс

# cat cpulimit.sh 
#!/bin/bash


TARGET=$1

[ -z "$TARGET" ] && echo "Usage bash cpulimit.sh command" && exit 1

cpulimit -l 1 bash $TARGET

while sleep 0;do
        lsof -n -t $TARGET | xargs pstree -p | sed -e 's/(/(\n/g' | sed -e 's/)/\n)/g' | egrep -v '\(|\)' | while read i; do 
                echo $i; 
                cpulimit -l 1 -b -p $i; 
        done
done
-121--89280-

Я думаю, что он не работает, когда один сервер является вашим локальным ПК. Я примерил тест сервера к серверу, он работает нормально.

-121--289514-

Кали, как и Debian, является полностью открытым исходным кодом. Однако существует много инструментов с закрытым исходным кодом, которые могут представлять большой интерес для пользователя Kali, и, как таковые, они были доступны через несвободное репо. Если вы не хотите использовать программное обеспечение с закрытым исходным кодом в вашем Kali distro, отключите это репо.

Если вы просто пользователь Kali, то наличие программного обеспечения с закрытым исходным кодом на вашем компьютере не должно быть проблемой. Проблемы возникают, если вы хотите построить производную Kali и распространить ее; в этом случае вы должны быть полностью осведомлены об ограничениях при перераспределении каждой части программного обеспечения с закрытым исходным кодом.

0
14.02.2018, 00:31
4 ответа

Pude resolverlo usando esto:

[ -f $dir/_$file ]

o

if [ -f $dir/_$file ]; then

para simplemente verificar la existencia de un archivo con el prefijo particular. Bastante simple, lo hice más difícil de lo necesario.

A veces, no sé si usar o no comillas cuando hago referencia a variables.

0
28.01.2020, 04:30

Dado un archivo que se expande por$filename:

if [[ -f "dir/_${filename}" ]]; then
    echo "The prefixed copy exists."
else
    echo "The prefixed copy does not exist."
fi
0
28.01.2020, 04:30

Estoy viendo las respuestas, pero también puse mi respuesta. Tal vez sea útil para alguien.

#!/bin/sh

filename="file"
directory="bash_test"

if [ "$filename" = "$(basename $directory/_$filename|tr -d ^_)" ]
then
    echo "Prefix exists."
else
    echo "Prefix not exists."
fi
0
28.01.2020, 04:30

Проверка с -eqзавершится неудачно, так как аргументы не являются целыми числами(-eqпроверки на арифметическую эквивалентность двух целых чисел ).

Вероятно, вы захотите проверить, занято ли подчеркнутое имя чем-то другим, а не просто обычным файлом.

Вы можете сделать это с помощью

if [ -e "$dir/_$file" ]; then
    printf 'The name "%s" already exists in directory %s\n' "_$file" "$dir"
fi

Вам потребуется двойная кавычка $dir/_$file, как я показал выше, или как "$dir"/_"$file"(, если $dirи $fileзаключены в кавычки ). Это позволяет избежать разделения слов на значения переменных, что, в свою очередь, позволяет избежать синтаксической ошибки времени выполнения, если одна или обе из них по какой-то причине содержат пробельные символы. Это также позволяет избежать вызова генерации имени файла (подстановки )для каталога и имени файла.

Я использовал тест -e, поскольку полагаю, что вы также хотели бы знать, есть ли, например, каталог с подчеркнутым именем в каталоге $dir.

0
28.01.2020, 04:30

Теги

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