[117640]используя вычислительный кластер?
Так как вы спрашиваете о [118092]qsub[118093], я предполагаю, что вы используете [118094]GridEngine[118095] или какой-нибудь [118096]компьютерный кластерный продукт[118097].
qsub
какой-то сценарий
исполняемый
#!/bin/bash
/usr/bin/alltray /usr/bin/thunderbird &
sleep 5m
killall thunderbird-bin
Предполагая, что вы запускаете SSH на головном узле, вы можете просто получить текущее время с него, используя команду date
через SSH.
ssh user@host date
Самый простой и безопасный способ аутентификации на головном узле - это аутентификация с закрытым ключом , поэтому вам не нужно вводить пароль для входа в систему.
На подчиненных узлах вы можете установить текущее время, используя полученное значение, используя следующую команду как корень :
date --set=STRING
где СТРОКА
- строковое значение, полученное от головного узла. . Это можно объединить в одну команду с помощью подстановки команд
date --set="$(ssh user@host date)"
Я признаю, что это немного похоже на решение для синхронизации времени для бедняков , но я не понимаю, почему это не сработает. Просто отключите службу синхронизации времени, если она у вас есть, чтобы не вносить изменения в ваш сценарий, например:
/etc/init.d/ntpd stop
Вы не предоставили много информации о своих системах, так что это все, что я могу делать. Лучше настроить подходящий инструмент для синхронизации времени, но для этого нам нужна дополнительная информация о вашей системе, например какой у вас дистрибутив.
Если у вас есть root-доступ к узлам, то для настройки синхронизация времени. Наиболее часто используемым инструментом для этого является ntpd , доступный во всех, кроме самых специализированных дистрибутивов Linux (а также в других системах Unix). Ntpd периодически отправляет запросы по сети для получения текущего времени, измеряет отклонение локальных часов и настраивает локальные часы, чтобы компенсировать их перекос. Вы можете добиться большей точности, чем миллисекунды, по локальной сети.
Для достижения наилучших результатов выберите один или несколько узлов в качестве серверов, например головной узел (ы). Установите пакет сервера NTP (например, ntp
в Debian / Ubuntu / Mint, а также в Fedora / RHEL / CentOS) и настройте серверы как ваши головные узлы, а также некоторые Интернет-серверы. В конфигурационном файле / etc / ntp.conf
, у вас должно получиться что-то вроде
server 0.fedora.pool.ntp.org
server 1.fedora.pool.ntp.org
server 2.fedora.pool.ntp.org
server 3.fedora.pool.ntp.org
server head1.mycluster.internal.example.com
server head2.mycluster.internal.example.com
(оставьте строки, заданные вашим дистрибутивом, и добавьте свои). Если на головных узлах есть строка restrict
, убедитесь, что она разрешает IP-адреса всех узлов. На других узлах вы можете ограничить 127.0.0.1
.
Перед настройкой NTP установите часы примерно на правильное время. Ntpd не будет синхронизировать время, если оно превышает 20 минут (предполагается, что вы неправильно установили часовой пояс или что-то не так с часами или сетью). Поэтому сначала установите часы вручную, например сначала установите правильную дату и время на локальном компьютере, затем вы можете использовать
ssh somenode "date -d $(date +%m%d%H%M%Y.%S)"
, чтобы установить часы somenode
на несколько десятков секунд ниже локальных часов. Как только вы это сделаете, установите ntp или, если он уже установлен, перезапустите демон с помощью service ntpd restart
или любым другим способом, который использует ваш дистрибутив.