Passe o comando para o WSL Ubuntu 16.04 ao abrir / inicializar o WSL ubuntu

0

Depois de configurar um cron job, estou tentando: ativar automaticamente o serviço cron quando eu abro o aplicativo Windows Subsystem para Linux Ubuntu 16.04 na Windows App Store.

Atualmente, estou tentando alcançar esse objetivo simulando:

  1. Abra o WSL Ubuntu
  2. insira sudo service cron start
  3. <enter>

Para fazer isso, eu localizei o ubuntu1604.exe, fiz-me proprietário e me dei permissão para ler escrever e abrir o ubuntu1604.exe.

Em seguida, eu abro cmd no modo de administrador, naveguei para: C:\Program Files\WindowsApps\CanonicalGroupLimited.Ubuntu16.04onWindows_1604.2018.510.0_x64__79rhkp1fndgsc e digitei: ubuntu1604.exe para verificar que eu era capaz de abrir o WSB ubuntu a partir do cmd sem ser solicitado nada. Eu era, uma vez que apenas abriu o Ubuntu na mesma janela cmd (visível graças ao green <user>@<pcname>:~$ exibido no cmd ).

Em seguida, tentei passar um argumento para o WSL Ubuntu enquanto o abria com:

  1. ubuntu1604.exe run echo "hello world"
  2. ubuntu1604.exe echo "hello world"
  3. ubuntu1604.exe -c echo "hello world"
  4. ubuntu1604.exe -c

No entanto:

  1. Retorna hello world , mas não abre o WSB Ubuntu.
  2. Retorna uma forma de documentação sobre como iniciar uma distribuição do Linux (anexada na figura abaixo).
  3. Retorna hello world , mas não abre o WSB Ubuntu.
  4. Abre o Ubuntu na localização do caminho cmd atual, mas não executa

Então,tenteiabri-loapartirdeumscriptemloteouscriptpowershellcom:

  1. Scriptemlotetest1.bat:

start/d"C:\Program Files\WindowsApps\CanonicalGroupLimited.Ubuntu16.04onWindows_1604.2018.510.0_x64__79rhkp1fndgsc" ubuntu1604.exe echo "hello world"

  1. Script em lote: test2.bat

    Process.Start("C:\Program Files\WindowsApps\CanonicalGroupLimited.Ubuntu16.04onWindows_1604.2018.510.0_x64__79rhkp1fndgsc\ubuntu1604.exe", "echo "hello world"");

  2. Script do Powershell: test3.ps1

Process.Start("C:\Program Files\WindowsApps\CanonicalGroupLimited.Ubuntu16.04onWindows_1604.2018.510.0_x64__79rhkp1fndgsc\ubuntu1604.exe", "echo "hello world"");

  1. Script do Powershell: test4.ps1 Process.Start ("C: \ Arquivos de programas \ WindowsApps \ CanonicalGroupLimited.Ubuntu16.04onWindows_1604.2018.510.0_x64__79rhkp1fndgsc \ ubuntu1604.exe", echo "olá mundo"); '

No entanto:

  1. Abre uma grande tela preta e fecha em um piscar de olhos.
  2. Process.Start não é reconhecido como um comando interno ou externo
  3. não está em linguagem powersell
  4. não está em linguagem powershell.

Agora estou ciente de que talvez a opção de passar qualquer argumento que possa executar um comando sem interação do usuário na inicialização do WSB ubuntu1604 pode estar desabilitada, pois é um aplicativo da loja de aplicativos (ou por qualquer outro motivo).

Por isso:

  1. Se alguém souber se minha sintaxe está correta, mas minha intenção é não será possível desta forma, por favor me avise.
  2. Se for possível, mas estou fazendo errado, agradeço qualquer feedback sobre o que estou fazendo de errado ou uma solução que o faça corretamente.
por a.t. 11.10.2018 / 18:26

1 resposta

0

Acho que os cronjobs são destinados a ser executados periodicamente.

Para executar um comando automaticamente na inicialização do WSL Ubuntu 16.04, você pode:

  1. cd para /home/<your ubuntu user name>
  2. sudo nano .bashrc
  3. O editor de texto nano cria / abre um arquivo .bashrc
  4. Nesse arquivo muitos exemplos já podem ser mostrados, para apenas executar seu comando na inicialização do WSL Ubuntu 16.04, escreva seu comando na primeira linha do arquivo .bashrc.
  5. Por exemplo: echo "hello world" como mostrado na figura abaixo.
  6. Feche o editor com: ctrl+x
  7. Salve o arquivo com Y
  8. Saia do Ubuntu
  9. Reinicie o Ubuntu e verifique se o mundo hello foi impresso antes do seu nome de usuário.

! [Um exemplo de comando no .bashrc que é executado na inicialização do WSL     ubuntu.] 1

Você pode substituir o comando hello world por sudo service cron start para ativar o serviço de tempo de execução. No entanto, você ainda precisará inserir sua senha manualmente. Para resolver isso, use: link

  1. Abra o WSB ubuntu 16.04 (terminal)
  2. sudo visudo
  3. Na parte inferior do arquivo, adicione a linha: 'ALL = (ALL) NOPASSWD: TODOS
  4. Por exemplo, com o nome de usuário zq, você adicionaria a seguinte linha à parte inferior do arquivo:
  5. zq ALL=(ALL) NOPASSWD: ALL
  6. ctrl + x para sair
  7. y seguido por <enter> para salvar.
  8. Então, novamente, feche o Ubuntu e abra-o novamente e verifique
  9. O serviço cron está sendo executado automaticamente quando você inicializa / abre o WSL ubuntu 16.04 sem solicitar senha.
  10. (você pode verificar com o comando: sudo service cron status .)
por 11.10.2018 / 19:12