Самый легкий путь состоит в том, чтобы преобразовать дату в Unix time_t значение (т.е. секунды с начала эпохи, или '01.01.1970 0:00:00'), и затем substract 30 дней * 86 400 секунд в день от того числа.
например, следующее использование в качестве примера set -x
так, чтобы Вы видели значение переменной D, когда это изменяется.
#! /bin/ksh
set -x
D=$(date -d '2013-10-13' '+%s')
D=$((D - 30 * 86400))
date -d "@$D"
Обратите внимание, что это зависит от версии GNU date
, от GNU Coreutils. Другие версии даты не могут поддерживать преобразование значения time_t назад к отформатированной дате с @
. Если Вы не установили GNU coreutils, это, вероятно, не доступно в Вашей системе AIX так gawk
вероятно, Ваш наилучший вариант преобразовать назад в отформатированную дату:
echo "$D" | gawk '{print strftime("%c", $0)}'
мой исходный ответ здесь предложил плоскость awk, но дальнейшее тестирование в моей debian системе показало это ни один mawk
ни original-awk
имейте strftime
встроенная функция, таким образом, необходимо будет установить или GNU Coreutils или GNU Awk.
Если жемчуг установлен в системе, жемчуг может использоваться вместо awk:
echo $D | perl -nE 'say scalar gmtime $_'
Существует несколько альтернативных методов и примеров выполнения этого в:
https://stackoverflow.com/questions/3249827/convert-from-unixtime-at-command-line
Посмотрим на диаграмму производительности, чтобы понять различные уровни, в которых команда netstat
полезна для отладки. Команда
Ethernet
netstat -in
используется на этом уровне, где флаг -i
используется для отображения таблицы всех сетевых интерфейсов, или указанного iface. Команда
IP
netstat -an
используется на этом уровне, где флаг -a
используется для отображения как прослушивающих, так и неслушивающих (для TCP это означает установленные соединения) сокетов.
TCP/UDP
netstat -at
используется для отображения либо TCP, либо UDP соединений. TCP и UDP протоколы используются на транспортном уровне.
Sockets
netstat -p
используется для отображения того, какие процессы используют какие именно сокеты.