cron executa shells em um ambiente modificado com um% mínimo dePATH e presumivelmente /usr/bin não presente, portanto, /usr/bin/nohup não está sendo encontrado.
Você pode:
-
adicione
/usr/binaoPATH, em vez de modificar ocrontab, você deve adicionar isso na parte superior do script:#!/bin/sh export PATH="$PATH":/usr/bin nohup /home/ubuntu/elasticsearch-2.3.4/bin/elasticsearch & -
Use o caminho absoluto para
nohup:#!/bin/sh /usr/bin/nohup /home/ubuntu/elasticsearch-2.3.4/bin/elasticsearch &
Observe que, de acordo com a entrada crontab , você está executando o script como um argumento para sh ( dash ) enquanto possui exatamente o mesmo shebang. Neste caso, isso não faz qualquer diferença, mas tenha cuidado com isso se o shebang for diferente. Normalmente, um faria o script executável e usaria o shebang para indicar o intérprete desejado.
Agora, a parte mais importante . cron executa todos os jobs dados em suas respectivas subshells e gera essas subshells paralelas (non-blocking), isto é, executa jobs de maneira paralela. Então você não precisa do nohup e do backgrounding ( & ), apenas faça (baseado no seu exemplo, /home/ubuntu/elasticsearch-2.3.4/bin/elasticsearch é executável):
@reboot /home/ubuntu/elasticsearch-2.3.4/bin/elasticsearch