Получить время безотказной работы системы с большей точностью, чем секунды

Обратите внимание, что символ $имеет разные эффекты и значения для оболочки (, например. bash )и для awk.

В оболочке ${name}вводится расширение переменной, и когда эта переменная является целым числом, доступ к переменной представляет собой список аргументов оболочки . В оболочке (bash )самым большим аргументом (без{…})является $9, но с {…}нет (установленного )предела, пока новые запросы памяти предоставляется.

В awk$является оператором доступа к полям строки ввода. Существует жесткое ограничение в 32767 возможных полей в mawk :

.
$ echo $(seq 80000) | mawk '{print $(32767+2)}'
mawk: program limit exceeded: maximum number of fields size=32767

Но не в GNU awk:

$ echo $(seq 80000) | awk '{print $(32767+2)}'
32769

В awkоператор$мог повторяться (как !(, а некоторые другие )могли):

$ awk 'BEGIN{var=111;print( !!!!!!var )}'
1

$ echo 23 {a..z} | awk '{field=1;print( $$field )}'
v

Это ближе к тому, что вам нужно?

awk 'NR == FNR {a[$1 FS $2] = $3; next} 
     $$indexa FS $$indexb in a {$$indexa = a[$$indexa FS $$indexb]}
    ' filea indexa=16 indexb=25 fileb
0
18.11.2020, 13:51
1 ответ

/proc/uptime указывает время безотказной работы в сотых долях секунды.

Если вам нужны более точные значения, вы можете написать модуль ядра на основе реализации /proc/uptime.

2
18.03.2021, 22:48

Теги

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