Как быстрый взлом:
[Unit]
Description=dropbox
After=local-fs.target network.target
[Service]
User=romeovs
ExecStartPre=sh -c 'while ! ping -c1 dropbox.com >/dev/null; do sleep 1; done'
ExecStart=/usr/bin/dropboxd
[Install]
WantedBy=multi-user.target
Должен работать независимо от того, о чем сообщает любой администратор сети.
Смотрите
man updateb
для более подробной информации.[115696]-[115696].
В OSX это: sudo /usr/libexec/locate.updatedb
Что может быть связано с: sudo ln -s /usr/libexec/locate.updatedb / usr / local / bin / updatedb
Кажется глупым создавать символическую ссылку для стандартной команды unix, но там она является.
Пока ответ:
sudo updatedb
технически правильно, почти никогда не рекомендуется запускать updatedb
в командной строке отдельно, если также установлено задание cron. В зависимости от варианта Unix задание cron содержит положения блокировки и любой объем конфигурации, который не охватывается автономной командой updatedb
.
Если базу данных локации необходимо часто обновлять, определенно стоит попытаться определить подходящее задание cron для конкретного хоста и запустить его вручную.
В зависимости от администратора задание cron для updatedb
может быть скрыто в разных местах. Таким образом, простая -попытка грубой силы найти задание cron будет:
( sudo crontab -l > /tmp/crontab.root;
( echo /tmp/crontab.root; ls -1d /etc/*cron* /etc/*cron*/* ) \
| tr '\n' '\0' \
| xargs -0 -r -e grep -nH -e updatedb;
rm -f /tmp/crontab.root
) 2>/dev/null
, который показывает следующий результат на одной из моих систем Ubuntu:
/etc/cron.daily/mlocate:5:[ -x /usr/bin/updatedb.mlocate ] || exit 0
/etc/cron.daily/mlocate:21:flock --nonblock /run/mlocate.daily.lock $IONICE /usr/bin/updatedb.mlocate
Правильная команда для обновления базы данных locate в этом случае
sudo /etc/cron.daily/mlocate
Более систематический подход заключается в определении пакета, который предоставляет locate
и updatedb
.
Например, в ОС с пакетом apt/dpkg вы можете узнать, какой вариант locate установлен с помощью:
dpkg -S locate | grep /bin/
В моем случае это:
mlocate: /usr/bin/updatedb.mlocate
Чтобы узнать, какое задание cron отвечает за это, запустите:
dpkg -L mlocate | grep cron
Что в моем случае показывает:
/etc/cron.daily
/etc/cron.daily/mlocate
Чтобы обновить базу данных, запустите задание cron от имени пользователя root:
sudo /etc/cron.daily/mlocate
Если cronjob отсутствует, а updateb сам по себе не работает, попробуйте найти установленную версию с помощью:
dpkg -L mlocate | grep /bin/
, который возвращает:
/usr/bin/mlocate
/usr/bin/updatedb.mlocate
NB :Если вы понизите этот ответ, будьте так любезны и дайте мне знать, почему ответ любителя считается лучшим.