Попробуйте это:
find . -type f -name '*.base.coverage.txt' \
| xargs paste > paste_all_l30.p90.base.cov.norm
Это будет работать, пока нет слишком многих файлов. Если существует много файла затем это:
touch paste_all_l30.p90.base.cov.norm
for file in `find . -type f -name '*.base.coverage.txt'`; do
paste paste_all_l30.p90.base.cov.norm $file > tmp
mv tmp paste_all_l30.p90.base.cov.norm
done
Я не думаю, что существует любой лучший метод, чем просто наблюдение роста файла журнала или отказ вырасти. И это не является надежным, так как учет может быть отправлен в альтернативный файл. и даже в нормальной системе ни с чем странный случай там будет заданием крона, которое прекращает считать, поворачивает журнал и перезапускает его, таким образом, существует краткое окно, где Вы получите неправильный ответ.
Возможно, должна быть символьная ссылка на текущий учетный файл где-нибудь в /proc
, но нет того.
Я нахожусь на CentOS, и он использует psacct
.
psacct
выполнения как услуга, таким образом, Вы можете:
service psacct status
и можно проверить на lockfile: /var/lock/subsys/psacct
Я думаю, что это работает в пространстве ядра, и я думаю его на самом деле разработанный быть твердым сказать, работает ли это или включенное (если Вы используете неописуемый учетный файл и изменяете местоположение lockfile в сценарии запуска), Это делает это очень полезным инструментом для того, чтобы сделать судебную экспертизу на pwned поле.
Вы правы:
Нет процесса, связанного с учетной записью системы, это внутренняя функция ядра, которая напрямую пишут на системной учетной записи, который на многих Unixes является / var / аккаунт / ACCT
.
Нет системного вызова, чтобы получить статус этой внутренней функции ядра.
Версимый способ проверить, что учет системы включен, это использовать стандартную команду UNIX TASTCOMMM
дважды. Первый процесс будет зарегистрирован в системном файле бухгалтерского учета, второй подтвердит вас, что последний прекращенный и зарегистрированный процесс FAXOMMM
.
На сильно загруженном сервере, и, в частности, на многопроцессорах, 2-й LASTCOMMM
может отображаться еще несколько других завершенных процессов, прежде чем отображать 1-й LASTCOMMM
. Это нормально.
Вот моя лучшая функция оболочки, чтобы получить статус учетного учета на:
is_acct_on() {
t=`mktemp /tmp/acct.XXXX`
touch ${t}
sleep 1
x=`find /var/account -newercc ${t} -name "acct" | head -1`
rm ${t}
[ -z "${x}" ]
}
Использование:
is_acct_on
Возврат 0
0 , если учетная запись выключается
1
, если учет включен.