Согласно моему блогу, мое решение было установлено JAVA_OPTS
с $ CATALINA_HOME /conf/tomcat7.conf
, например:
# You can pass some parameters to java here if you wish to
#JAVA_OPTS="-Xminf0.1 -Xmaxf0.3"
JAVA_OPTS="-Xms512M -Xmx1024M -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=9090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=54.***.***.65"
И результат после перезапуска Tomcat был:
# ps aux | grep java
tomcat 1359 96.6 13.0 1887508 220732 ? Sl 09:19 0:44 /usr/lib/jvm/jre/bin/java -Xms512M -Xmx1024M -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=9090 -[...]
PS Не забудьте создать копию файлов конфигурации по умолчанию. Тогда grep -r JAVA_OPTS etc / *
, чтобы найти его в # документация
будет более полезной: -)
Несмотря на то, что вы пометили вопрос bash
и ksh
, с zsh
и квалификаторами glob:
print **/*.txt(.om[1,5])
печатает первые 5 простых файлов(.
)с расширением .txt
, упорядоченных по возрастанию времени модификации(om
)
напр.
print **/*.txt(.om[1,5])
dir/file1.txt file2.txt dir/file.txt File1.txt File2.txt
Оболочка bash
(и ряд других оболочек )имеют нестандартный -оператор проверки -nt
. Этот оператор проверяет, является ли время модификации одного файла более новым, чем время модификации другого.
В bash
,оператор -nt
имеет временное разрешение в одну секунду. В ksh93
можно использовать тот же оператор с разрешением менее -секунды. Приведенный ниже код совместим с ksh93
, за исключением того, что shopt -s globstar
необходимо изменить на set -o globstar
, где используется этот параметр.
Использование оператора проверки -nt
для файлов, соответствующих *.txt
в текущем каталоге, для поиска самого нового обычного файла:
unset newest
for filename in./*.txt; do
if [ -f "$filename" ] && [ "$filename" -nt "$newest" ]; then
newest=$filename
fi
done
или, немного короче,
unset newest
for filename in./*.txt; do
[ -f "$filename" ] && [ "$filename" -nt "$newest" ] && newest=$filename
done
В конце цикла значение "$newest"
будет именем последнего модифицированного обычного файла в текущем каталоге, который имеет суффикс имени файла .txt
, при условии, что такие файлы вообще существовали (иначе переменная newest
была бы не установлена ).
Оболочке dash
, если она используется, потребуется отдельная проверка существования файла $newest
, так как ее оператор -nt
имеет несколько иную семантику, чем bash
и ksh93
:
unset newest
for filename in./*.txt; do
if [ -f "$filename" ]; then
if [ ! -f "$newest" ] || [ "$filename" -nt "$newest" ]; then
newest=$filename
fi
fi
done
Чтобы сделать это рекурсивно с помощью bash
, установите параметр оболочки globstar
и используйте **
для подстановки имен файлов:
shopt -s globstar
unset newest
for pathname in./**/*.txt; do
if [ -f "$pathname" ] && [ "$pathname" -nt "$newest" ]; then
newest=$pathname
fi
done
Шаблон **
соответствует точно так же, как *
, но допускает сопоставление через /
в путях.
Оболочка dash
не поддерживает это.
Основываясь на предыдущем коде, чтобы получить пять последних измененных файлов:
shopt -s globstar
unset newest
for pathname in./**/*.txt; do
if [ -f "$pathname" ]; then
for (( i=0; i < 5; ++i )); do
if [ "$pathname" -nt "${newest[$i]}" ]; then
newest=( "${newest[@]:0:i}" "$pathname" "${newest[@]:i:4}" )
break
fi
done
fi
done
Единственная дополнительная вещь здесь состоит в том, что newest
теперь является массивом bash
, и что мы, для каждого пути, который мы рассматриваем, должны просмотреть пять последних найденных «самых новых файлов», чтобы увидеть, где в массив, в который может поместиться этот новый файл.
Когда мы обнаружили, что файл действительно новее, чем один из других файлов в массиве, мы вставляем новый путь в массив и в то же время ограничиваем количество элементов в нем до пяти.
После завершения цикла массив newest
будет содержать пути пяти последних измененных обычных файлов, имеющих суффикс .txt
имен файлов.Массив будет отсортирован по времени модификации с последним измененным файлом как ${newest[0]}
.
Вы можете перечислить файлы по времени модификации (или созданию или доступу )с помощью ls.
просто скажи
ls -t *.txt | head -n5
, чтобы получить последние 5 последних файлов.txt
Вы можете передать его в myutility с помощью $ ()или xargs.
ls -t *.txt | head -n5 | xargs myutility
Если вам нужна рекурсия, вы можете использовать find.
find -type f -iname "*.txt" | xargs ls -t | head -n5 | xargs myutility
(возможная проблема :у вас должен быть хотя бы один файл.txt, чтобы это работало. вы можете исправить это, но это самое чистое решение ).
РЕДАКТИРОВАТЬ :ОП хотела знать, как обрабатывать имена файлов с пробелами.Вот одно решение:
find -type f -iname "*.txt" | xargs ls -t | head -n5 | tr '\n' '\0' | xargs -0 myutility
Если вы хотите решить возможную проблему, упомянутую выше, вы можете проверить наличие файлов перед -с помощью find..... | egrep '.*' || exit
или просто включить какое-то бессмысленное имя файла в ls и проигнорировать предупреждение вроде xargs ls -t ''
.