Мы используем простой сценарий оболочки как тот ниже. Необходимо было бы, очевидно, настроить его несколько, чтобы сказать его о различных именах файлов и решить, на каком поле искать, который, но Вы получаете общее представление. В нашем случае мы выслеживаем файл в том же местоположении на нескольких полях. Это требует аутентификации SSH через сохраненные ключи вместо того, чтобы ввести в паролях.
#!/bin/bash
FILE=$1
for box in box1.foo.com box2.foo.com box3.foo.com box4.foo.com; do
ssh $box tail -f $FILE &
done
Относительно комментария Mike Funk о неспособности уничтожить конец с ^C, я храню вышеупомянутое в файле, названном multitails.sh, и добавил следующее до конца его. Это создает kill_multitails.sh файл, который Вы выполняете, когда Вы сделаны, выследив, и затем он удаляет себя.
# create a bash script to kill off
# all the tails when you're done
# run kill_multitails.sh when you're finished
echo '#!/bin/sh' > kill_multitails.sh
chmod 755 kill_multitails.sh
echo "$(ps -awx | grep $FILE)" > kill_multitails_ids
perl -pi -e 's/^(\d+).*/kill -9 $1/g' kill_multitails_ids
cat kill_multitails_ids >> kill_multitails.sh
echo "echo 'running ps for it'" >> kill_multitails.sh
echo "ps -awx | grep $FILE" >> kill_multitails.sh
echo "rm kill_multitails.sh" >> kill_multitails.sh
rm kill_multitails_ids
wait
Я нашел одно обходное решение:
nonBusinessDays = (from dt in
(from ac in db.AdminCalendar
where ac.DateTimeValue >= calendarStartDate && ac.DateTimeValue <= calendarEndDate && ac.IsBusinessDay == false
select ac.DateTimeValue).ToList()
select string.Format("{0:M/d/yyyy}", dt)).ToList();
Попробуйте изменить свой выбор, чтобы использовать ToString:
nonBusinessDays = (from ac in db.AdminCalendar
where ac.DateTimeValue >= calendarStartDate && ac.DateTimeValue <= calendarEndDate && ac.IsBusinessDay == false
select ac.DateTimeValue.ToString("MM/dd/yyyy")).ToList();