вид в заданиях хронологически

Вы могли рассмотреть использование петлевых файловых систем.

Во-первых, создайте файл для содержания файловой системы:

dd if=/dev/zero of=~/myfilesys bs=8K count=256

Это создаст пустой файл на 2 ГБ. Затем, необходимо подключить его к устройству закольцовывания:

losetup /dev/loop0 ~/myfilesys

Теперь, создайте файловую систему:

mkfs -t ext3 /dev/loop0

Наконец, смонтируйте свою файловую систему:

mkdir ~/myfilesys.d
mount /dev/loop0 ~/myfilesys.d

Когда Вы закончены:

umount /dev/loop0
losetup -d /dev/loop0

И снова использовать позже:

losetup /dev/loop0 ~/myfilesys
mount /dev/loop0 /mnt/myfilesys.d

(Да, я знаю, что можно объединиться losetup и mount шаги, но в иллюстративных целях, это более ясно видеть то, что продолжается путем разделения их).

Теперь, ~/myfilesys файл будет смотреть и действовать как файл всех команд, но при монтировании Вы видите файлы в этой файловой системе в ~/myfilesys.d.

11
28.01.2016, 09:11
3 ответа

Принятие Вас находится на Linux, выводе atq всегда имеет дату в том же формате. Отсортируйте поля в соответствующем порядке, заботясь для объявления, которые имена месяца или числа. Удостоверьтесь, что использовали английскую локаль для имен месяца, так как это что atq использование.

atq | sort -k 6n -k 3M -k 4n -k 5 -k 7 -k 1
#          year  month day   time queue id
13
27.01.2020, 19:58

sort команда может сделать это, но к сожалению, Вы не можете использовать --month-sort и --numeric-sort вместе. Так использование:

$ atq |
    sed 's/Jan/1/;s/Feb/2/;s/Mar/3/;s/Apr/4/;s/May/5/;s/Jun/6/;s/Jul/7/;s/Aug/8/;s/Sep/9/;s/Oct/10/;s/Nov/11/;s/Dec/12/' |
    sort -n -k6,6 -k3,4

Это преобразует сокращения месяца в их числовые значения, затем вид сначала в год (-k6,6), затем месяц и день (-k3,4). Вывод не будет иметь имен месяца, но если бы Вы действительно хотели, то Вы могли бы преобразовать тех, которые назад имеют другого sed.

$ atq |
    sed 's/Jan/1/;s/Feb/2/;s/Mar/3/;s/Apr/4/;s/May/5/;s/Jun/6/;s/Jul/7/;s/Aug/8/;s/Sep/9/;s/Oct/10/;s/Nov/11/;s/Dec/12/' |
    sort -n -k6,6 -k3,4 |
    sed 'h;s/^[0-9][0-9]*  *[A-Z][a-z][a-z] *\([0-9][0-9]*\).*/\1/;s/10/Oct/;s/11/Nov/;s/12/Dec/;s/1/Jan/;s/2/Feb/;s/3/Mar/;s/4/Apr/;s/5/May/;s/6/Jun/;s/7/Jul/;s/8/Aug/;s/9/Sep/;G;s/^\(.*\)\n\([0-9][0-9]*  *[A-Z][a-z][a-z] *\)[0-9][0-9]*\( .*\)/\2\1\3/'

Заметьте это s/12/Dec/ потребности прибыть прежде s/1/Jan/.

2
27.01.2020, 19:58
  • 1
    На одном хосте с 200 + задания вывод, кажется, отсортирован по идентификатору главным образом - не, всегда устанавливают метку времени в 2-й половине. Так или иначе, date команда имеет специальные анализирующие метку времени полномочия, которые могли сделать это более простым при питании правые стороны поля, например, с cut. –  Marcos 23.03.2012, 14:07
  • 2
    Можно передать отдельную опцию вида каждому -k опция: -k 3M и так далее. –  Gilles 'SO- stop being evil' 23.03.2012, 21:14

Взгляды усложнили, но это также работает:

atq |awk '{system("echo "$1 "  $(date +%Y-%m-%d_%H-%M-%S \
--date \""$2" "$3" "$4" "$5" "$6"\")  "$7"  "$8 )}' |sort -k2 
    469  2012-03-24_01-30-00  a  master
    655  2012-03-24_02-03-00  a  master
    671  2012-03-24_02-04-00  a  master
    657  2012-03-24_02-09-00  a  master
    673  2012-03-24_02-11-00  a  master
    537  2012-03-25_00-38-00  a  master
    539  2012-03-25_00-43-00  a  master
    652  2012-03-27_12-57-00  a  master
    654  2012-03-27_13-03-00  a  master
    656  2012-03-27_13-09-00  a  master

По сравнению с другими предложениями мне нравится, как фактическому парсингу оставляют date который понимает текстовую метку времени, таким образом, можно переформатировать, к чему Вы хотите, который делает ее бризом, чтобы отфильтровать или отсортировать позже.

Можно лавировать на a |column -t в конце, чтобы приятно выровняться и растянуть поля.

0
27.01.2020, 19:58
  • 1
    На самом деле, более короткая версия может быть выполнимой с bash readline вместо awk –  Marcos 24.03.2012, 02:20

Теги

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