Невозможно запустить приложение как службу, но выполнение как отдельный процесс просто работает

Для службы, хотя файл pid существует, но все же при попытке запустить службу, он не может сказать:

$ sudo service cassandra start
* could not access pidfile for Cassandra

Я проверил права доступа к папке под /var/run (владелец которого является root), а подпапка cassandra принадлежит пользователю cassandra, но служба все равно не может получить доступ к файлу pid, даже если я убедился, что файл pid существует. (Также выделен pid). Так почему он говорит, что не может получить доступ к pidfile?

И работает cassandra как автономный процесс просто работает, а не просто используя service cassandra start

$ sudo ls -l /var/run/cassandra 
total 4 
-rw-r--r-- 1 cassandra cassandra 4 Mar 18 07:33 cassandra.pid
$ sudo su
# ls -ld /var/run/cassandra 
dr--r----- 2 cassandra cassandra 60 Mar 18 07:38 /var/run/cassandra

Как мне сделать эту работу с помощью sudo service cassandra start?

3 ответа

Решение

Вы должны удалить /var/run/cassandra папка, следовательно, имеет неправильные разрешения:

sudo rm -rf /var/run/cassandra

Или вы можете исправить разрешения вручную:

sudo chmod 750 /var/run/cassandra

Затем запустите Cassandra как службу:

sudo service cassandra start


Некоторые объяснения

Инструкции о правах доступа к файлам вы можете найти здесь.

  • Удалить эту папку безопасно, потому что она воссоздает с нужными правами и содержимым. Но не удаляйте его, если он работает правильно. Это может привести к потере данных или неправильному поведению.

  • chmod 750 расшифровывает как rwxr-x --- разрешения. Это позволяет читать-писать-выполнять пользователю, читать-выполнять группе и ничего другим. Для Кассандры достаточно установить разрешения так.

Это решение может быть достигнуто следующим образом:

$ sudo vim /etc/init.d/cassandra;

Найдите следующую строку:

CMD_PATT="cassandra.+CassandraDaemon"

Заменить на:

CMD_PATT="cassandra"

Сохраните и остановите и начните снова. Сервис будет получать статус правильно; Проверено на Кассандре 2.3

Источник здесь: https://www.digitalocean.com/community/tutorials/how-to-install-cassandra-and-run-a-single-node-cluster-on-ubuntu-14-04(см. ШАГ 3)

Мое решение для миграции Cassandra 2.0.9 до 2.1.4

После обновления с

sudo apt-get install dsc21

Перейти в файл журнала:

tail -f /var/log/cassandra/system.log

Вы можете видеть, что вам нужно изменить свой конфигурационный файл cassandra.

  1. Стоп Кассандра

    sudo /etc/init.d/cassandra stop
    
  2. Перейти к файлу конфигурации Cassandra

    sudo vi /etc/cassandra/cassandra.yaml
    
  3. Закомментируйте эти 5 строк или удалите их:

    • multithreaded_compaction: false
    • preheat_kernel_page_cache: false
    • memtable_flush_queue_size: 4
    • in_memory_compaction_limit_in_mb: 64
    • compaction_preheat_key_cache: true
  4. Старт Кассандры

    sudo /etc/init.d/cassandra start
    
  5. проверить

    nodetool status
    
Другие вопросы по тегам