Выполните как можно быстрее, насколько это возможно, многие команды Curl

Во-первых, вы не должны использовать для этого sudo crontab -e . Это отредактирует файл crontab для пользователя root. Вам нужно это запустить в вашем пользовательском crontab, чтобы сохраненный сеанс gnome был вашим. Отбросьте sudo и просто запустите crontab -e . При необходимости добавьте себя в файл cron.allow , чтобы вы могли иметь файл crontab в качестве пользователя. (Также не забудьте снова отредактировать корневой каталог crontab и удалить эту запись.)

Во-вторых, вы не можете запускать такие вещи, как утилиты gnome из cron, не подключив их с правильными переменными $ DISPLAY . Среда, которую cron передает своим дочерним элементам, далеко не так совершенна, как оболочка входа в систему, и, поскольку она не работает в вашей графической среде входа в систему, она не связана с ней. Учтите это: возможно работать более чем в одной графической среде. Как системный сценарий узнает, над каким из них вы хотите работать? Это не так. Вам нужно выяснить, на каком ДИСПЛЕЕ он работает, и передать его своей команде.

Наконец, похоже, что это ВСЕ не место, чтобы делать это в любом случае. Зачем вам периодически убивать сеанс? Все, что пользователь делает в этом моменте, будет уничтожено. Также cron запускается вне зависимости от того, вошел ли пользователь в систему, поэтому ему не всегда есть над чем работать.

1
26.08.2018, 12:16
2 ответа

GNU Parallel имеет накладные расходы в 2 -5 мс на задание, что приближается к вашим 100 записям в секунду. Чтобы смягчить это, вы можете обернуть его parallel --pipe. Это должно выполнять около 25000 заданий параллельно в секунду на 100-ядерной машине :

.
#!/bin/bash

host="localhost"
port="********"

mycurl() {
  if [ "${15}" != "" ]; then
    # The numbering here should probably be adjusted
    data="field1=${1}&field2=${2}&field3=${3}&field4=${4}&field5=${5}&field6=${6}&field7=${7}&field8=${8}&field9=${9}&field10=${10}"
    curl --output /dev/null -d $data --silent -X POST https://myapi/myendpoint;
  fi
}
export -f mycurl

#----------------------LOOP starts------------------------
while true; 
do 
  nc -d $host $port
done |
  parallel -j100 --pipe --block 100k parallel --colsep, -j0 mycurl
1
28.01.2020, 00:30

Почему бы не переводить каждый curlвызов в фоновый режим:curl... &. Помещение амперсанда в конце команды оболочки похоже на использование двоеточия ;semi -, только он переводит процесс в фоновый режим.

0
17.05.2020, 12:02

Теги

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