Passare il comando a WSL Ubuntu 16.04 all'apertura / avvio di Ubuntu WSL


0

Dopo aver impostato un processo cron, sto provando a: abilitare automaticamente il servizio cron quando apro l'app Ubuntu 16.04 per il sottosistema Windows per Linux dall'App Store di Windows.

Attualmente sto cercando di raggiungere questo obiettivo simulando:

  1. Apri WSL Ubuntu
  2. accedere sudo service cron start
  3. <enter>

Per fare ciò, ho trovato ubuntu1604.exe, mi sono reso proprietario e mi sono dato il permesso di leggere scrivere e aprire ubuntu1604.exe.

Successivamente, apro cmdin modalità amministratore, sfoglio: C:\Program Files\WindowsApps\CanonicalGroupLimited.Ubuntu16.04onWindows_1604.2018.510.0_x64__79rhkp1fndgsce accedo: ubuntu1604.exeper verificare sono stato in grado di aprire WSL Ubuntu da cmd senza che mi venisse richiesto nulla. Lo ero, dato che ha appena aperto Ubuntu nella stessa cmdfinestra (visibile grazie al verde <user>@<pcname>:~$visualizzato nella cmd).

Successivamente ho provato a passare un argomento al WSL Ubuntu mentre lo aprivo con:

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

Però:

  1. Restituisce hello worldma non apre WSL Ubuntu.
  2. Restituisce una forma di documentazione su come avviare una distribuzione Linux (allegata nella figura seguente).
  3. Restituisce hello worldma non apre WSL Ubuntu.
  4. Apre Ubuntu nella posizione del percorso cmd corrente, ma non viene eseguito

Documentazione ricevuta nel comando 2.

Quindi ho provato ad aprirlo da uno script batch o uno script PowerShell con:

  1. Script batch test1.bat:

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

  1. Script batch: test2.bat

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

  2. Script 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 Powershell: test4.ps1 Process.Start ("C: \ Programmi \ WindowsApps \ CanonicalGroupLimited.Ubuntu16.04onWindows_1604.2018.510.0_x64__79rhkp1fndgsc \ ubuntu1604.exe", echo "hello world"); `

Anche se:

  1. Apre una grande schermata nera e si chiude in uno sfarfallio.
  2. Process.Start non è riconosciuto come comando interno o esterno
  3. Non è in linguaggio PowerShell
  4. Non è in linguaggio PowerShell.

Ora sono consapevole che forse l'opzione per passare qualsiasi argumen che può eseguire un comando senza l'interazione dell'utente all'avvio di WSL ubuntu1604 potrebbe essere disabilitata poiché è un'app dell'app store (o per qualsiasi altro motivo).

Quindi:

  1. Se qualcuno sa se la mia sintassi è corretta ma la mia intenzione
    non sarà possibile in questo modo, per favore fatemi sapere.
  2. Se è possibile ma lo sto facendo male, apprezzerei qualsiasi feedback su ciò che sto facendo di sbagliato, o una soluzione che lo fa bene.

5
Possibile duplicato di Come eseguire i servizi WSL all'avvio
alle

Risposte:


0

Penso che i cronjobs debbano essere eseguiti periodicamente.

Per eseguire un comando automaticamente all'avvio di WSL Ubuntu 16.04 è possibile:

  1. cd a /home/<your ubuntu user name>
  2. sudo nano .bashrc
  3. L'editor di testo nano quindi crea / apre un file .bashrc
  4. In quel file possono già essere mostrati molti esempi, per eseguire il tuo comando all'avvio di WSL Ubuntu 16.04, scrivi il tuo comando sulla prima riga del file .bashrc.
  5. Ad esempio: echo "hello world"come mostrato nell'immagine seguente.
  6. Chiudi l'editor con: ctrl+x
  7. Salva il file con Y
  8. Esci da Ubuntu
  9. Riavvia Ubuntu e verifica che il mondo di Hello sia stampato prima del tuo nome utente.

! [Un comando di esempio in .bashrc che viene eseguito all'avvio di WSL Ubuntu.] 1

È possibile sostituire il hello worldcomando con sudo service cron startper abilitare il servizio cronjob. Tuttavia, ti verrà comunque richiesto di inserire la password manualmente. Per risolvere questo problema, utilizzare: https://askubuntu.com/questions/147241/execute-sudo-without-password

  1. Apri WSL ubuntu 16.04 (terminale)
  2. sudo visudo
  3. Nella parte inferiore del file aggiungere la riga: `ALL = (ALL) NOPASSWD: ALL
  4. Ad esempio con il nome utente zq aggiungere la seguente riga nella parte inferiore del file:
  5. zq ALL=(ALL) NOPASSWD: ALL
  6. ctrl + x per uscire
  7. yseguito da <enter>per salvare.
  8. Quindi, chiudi Ubuntu e riaprilo e verifica
  9. Il servizio cron è in esecuzione automaticamente all'avvio / apertura di WSL ubuntu 16.04 senza richiedere la password.
  10. (puoi controllare con il comando:. sudo service cron status)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.