2) вероятно из-за 1) - ps
использование /proc
получить информацию о выполнении процессов.
1) или потому что инициализация, как ожидают, не сделает это или потому что ей не удается сделать это. Проверьте то, что распределение, как предполагается, делает на начальной загрузке - как система должна быть поднята.
Вещи можно попробовать:
смонтироваться /proc
, например: mount -t proc proc /proc
- второй аргумент произволен (это - то, что показывает источником монтирования). Проверьте то, что работает с PID=1
регистрация /proc/cmdline
какие параметры Ваше ядро получает на начальной загрузке. Если это содержит init=...
Вы, возможно, должны были бы изменить его на, например. /sbin/init
или удалите его, чтобы позволить ядру попытаться разрешить init, который будет выполнен сам. Необходимо сделать это в конфигурации загрузчика (для R-пи, это находится в некотором текстовом файле на SD-карте IIRC).
Проверьте, что желаемый init исполняемый файл существует - Busybox обычно имеет тонны символьных ссылок, указывающих на его двоичный файл так, чтобы можно было использовать command [args]
вместо busybox command [args]
. Ваш мог бы скучать по ним.
Я нашел эту страницу названной: Отправка сообщений с тегами, больше, чем 32 символа. В странице я заметил, что можно указать то, что похоже на диапазон к полям в шаблоне.
template (name="ForwardFormat" type="string" string="<%PRI%>%TIMESTAMP:::date-rfc3339% %HOSTNAME%
%syslogtag:1:32%% сообщение::: sp-if-no-1st-sp %% % сообщения ")
Возможно, Вы могли сделать то поле шире, чем что-нибудь, что отображено там, таким образом, вынудив вывод выстроиться в линию?
Вы могли также сделать это вскрытие с помощью следующего использования awk
управлять шириной того 3-го столбца. Это должно было бы только отобразить журнал, когда Вы хотите рассмотреть его, он на самом деле не устранил бы проблему, о которой Вы спрашиваете.
$ awk '{ printf("%s %s %-30s %s ", $1, $2, $3, $4); \
for (i = 5; i <= NF; i++) printf $i; print "" }' < rsyslog.txt
$ awk '{ printf("%s %s %-30s %s ", $1, $2, $3, $4); \
for (i = 5; i <= NF; i++) printf $i; print "" }' < rsyslog.txt
2013-12-14 15:59:39 postfix/pickup[4665]: 559A48C9: uid=0from=<root>
2013-12-14 15:59:39 postfix/cleanup[5194]: 559A48C9: message
2013-12-14 15:59:39 postfix/qmgr[7358]: 559A48C9: from=<xyz@example.com>
2013-12-14 15:59:39 postfix/smtp[5196]: 559A48C9: to=<abc@example.net>
2013-12-14 15:59:39 postfix/qmgr[7358]: 559A48C9: removed
OP задал следующий последующий вопрос в комментариях.
И Вы знаете, между прочим, как я мог избавиться если часть с идентификатором процесса, т.е. [4665]? Так, чтобы я только имел постфикс/погрузку в запасе в 3-м столбце.
Я полагаю, что следующий метод, используемый для извлечения данных для вставки в базу данных MySQL, мог быть адаптирован, чтобы сделать то, что Вы просите. Поток назван: пустой ProcessID, PID в Syslogtag.
Важная часть находится в этом примере:
$template dbFormat,"insert into SystemEvents (Message, Facility, FromHost, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag, ProcessID) values ('%msg%', %syslogfacility%, '%HOSTNAME%', %syslogpriority%, '%timereported:::date-mysql%', '%timegenerated:::date-mysql%', %iut%, '%syslogtag:R,ERE,1,FIELD:([a-zA-Z\/]+)(\[[0-9]{1,5}\])*:--end%', '%syslogtag:R,ERE,1,BLANK:\[([0-9]{1,5})\]--end%')",sql
Конкретно эти биты. Эти 2 переменные:
Становятся заполненными этими средствами форматирования:
'%syslogtag:R,ERE,1,FIELD:([a-zA-Z\/]+)(\[[0-9]{1,5}\])*:--end%'
'%syslogtag:R,ERE,1,BLANK:\[([0-9]{1,5})\]--end%'
Я полагаю, что 1-е избавляется от части PID вывода syslogtag. В то время как 2-е избавляется от части имени процесса строки и сохраняет просто информацию о PID.
С помощью rsyslogd невозможно вывести поля фиксированной ширины. Что возможно, так это разделенные полями табуляции.
Следующее должно быть использовано. Он также запишет имя процесса и PID в отдельные поля:
$template long-iso,"%$NOW%\t%timereported:8:15%\t%programname%\t%procid%\t%msg%\n"
[4665]
? Так, чтобы я только имелpostfix/pickup
оставленный в 3-м столбце. – Martin Vegter 15.12.2013, 15:28