Preciso executar sudo php artisan backup:run
e inserir a senha automaticamente todos os dias às 15h. Eu sei como fazer isso no Windows apenas usando o agendador de tarefas e configurando a execução como administrador no script .bat.
Responder1
Isso édeveseja praticamente o mesmo no Ubuntu 14.04 e nos lançamentos mais recentes - no entanto, talvez haja algumas diferenças.
A tarefa está dividida em duas partes:
- Para poder fazer isso
sudo
sem senha, adicione o usuário aosudoers
arquivo e permita que ele não exija senha. - Para executar um trabalho automaticamente, use
cron
.
sudoers
Adicione o usuário ao grupo sudo com
usermod -aG sudo <username>
Mude <username>
para o usuário com o qual você deseja executar o trabalho.
Para evitar a necessidade de inserir a senha, edite o /etc/sudoers
arquivo:
visudo
e adicione a seguinte linha no final do arquivo:
<username> ALL=(ALL) NOPASSWD:ALL
Novamente, mude <username>
para o usuário com o qual deseja executar o trabalho.
Observe que uma abordagem melhor seria criar um novo arquivo sudoers para seu usuário específico, em vez de editar o arquivo sudoers principal, assim:
echo "<username> ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/username
Para mais informações vejaComo adicionar usuário ao Sudoers no Ubuntu.
Veja também esta pergunta,Como posso adicionar um usuário como novo sudoer usando a linha de comando?
cron
cron é muito poderoso e há muitas opções diferentes. No entanto, para realizar sua tarefa, aqui estão apenas os fundamentos básicos:
Para editar o crontab, use
crontab -e
ou para um usuário diferente, use
crontab -u ostechnix -e
Se você nunca executou o crontab antes, pode ser solicitado que você escolha um editor na primeira vez que executá-lo.
Então, para um trabalho às 15h, adicione a linha
0 15 * * * <command-to-execute>
Então, no seu caso, use
0 15 * * * sudo php artisan backup:run
Salve e saia para o editor. Então, para verificar o crontab, use
crontab -l
Se você quiser alterar a hora, os campos são os seguintes, na página de manual do cron.
The time and date fields are:
field allowed values
----- --------------
minute 0-59
hour 0-23
day of month 1-31
month 1-12 (or names, see below)
day of week 0-7 (0 or 7 is Sunday, or use names)
A field may contain an asterisk (*), which always stands for
"first-last".
Para obter mais informações sobre crontab
, consulteUm guia para iniciantes em Cron Jobsou digite man cron
.
Veja também esta pergunta,Como configuro um trabalho Cron?