Крон запускает сценарий дважды

Да: попробуйте Ctrl + F3 и Ctrl + F4 T Swap верхних или нижних панелей. Вы также можете итерации, чтобы достичь других конфигураций.

-121--89313-

Учитывая предложения Антон , я пошел с этим скриптом. Основная идея состояла в том, чтобы сначала экспортировать PDF обратно на простое SVG, составляю SVG и снова экспортировать его как PDF. Размеры A4 жестко закодированы, но могут быть изменены в скрипте.

#!/bin/bash

# If you modify/extend this script, it'd be cool if you post your improvements on
#      https://unix.stackexchange.com/q/177263/9495

# This is A4 size
TARGET_WIDTH=744.09003
TARGET_HEIGHT=1052.3622
ext=".a4_4x3.pdf"
draw_border="1" # set to 0 to deactivate borders

TEMP_DIR="$(mktemp -d)"

pdftk A="$1" cat Aeast output "$TEMP_DIR/rot.pdf"

inkscape --export-plain-svg="$TEMP_DIR/rot.plain.svg" "$TEMP_DIR/rot.pdf"

psvg="$(cat "$TEMP_DIR/rot.plain.svg" | tr '\t' ' ' | tr -d '\n' | sed 's//>\n/g' | grep '.')"

W="$(echo "$psvg" | sed -n 's/^.*width="\([0-9.]\+\)".*$/\1/p' | head -n 1)"
H="$(echo "$psvg" | sed -n 's/^.*height="\([0-9.]\+\)".*$/\1/p' | head -n 1)"

orig_g="$(echo "$psvg" | sed -n '/^'; echo "$orig_g")"
else
  main_g="$orig_g"
fi
husk_open="$(echo "$psvg" | sed '/^"
  cat
  echo ""
}
move_down () {
  echo ""
  cat
  echo ""
}
mk_row () {
  echo "$1"
  echo "$1" | move_right
  echo "$1" | move_right | move_right
  echo "$1" | move_right | move_right | move_right
}
mk_all () {
  mk_row "$1"
  mk_row "$1" | move_down
  mk_row "$1" | move_down | move_down
}

margin_L="$(python -c "print ($TARGET_WIDTH - 4*$W)/2.")"
margin_H="$(python -c "print ($TARGET_HEIGHT - 3*$H)/2.")"

(
  echo "$husk_open"

  echo ""
  mk_all "$main_g"
  echo ""

  echo "$husk_close"
) | tr -d '\n' > "$TEMP_DIR/out.svg"

inkscape --export-pdf="$1$ext" "$TEMP_DIR/out.svg"

rm -r "$TEMP_DIR"

0
21.03.2015, 21:34
1 ответ
PID=`ps -ef | grep ${SCRIPTNAME} | head -n1 | awk ' {print $2;} '`

Это может либо вернуть PID вашего сценария, либо процесса grep, либо какого-то несвязанного процесса, который, как выяснилось, имеет достаточно похожее имя. Скорее всего, это и является причиной вашей проблемы: иногда ваш скрипт записывает свой собственный PID в pid-файл, а иногда он записывает что-то другое.

PID вашего скрипта находится в переменной $$.

Для тех случаев, когда вам действительно нужно найти PID процесса с заданным именем, смотрите Поиск идентификатора процесса и его убийство и grep - почему скобки в grep шаблоне удаляют grep процесс из результатов ps?

1
28.01.2020, 02:51

Теги

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