Truyền lệnh cho WSL Ubuntu 16.04 khi mở / khởi động WSL ubfox


0

Sau khi thiết lập công việc định kỳ, tôi đang cố gắng: tự động kích hoạt dịch vụ cron khi tôi mở ứng dụng Windows subsystem cho Linux Ubuntu 16.04 từ Windows App Store.

Hiện tại tôi đang cố gắng đạt được mục tiêu đó bằng cách mô phỏng:

  1. Mở Ubuntu WSL
  2. đi vào sudo service cron start
  3. <enter>

Để làm điều đó, tôi đã định vị ubfox1604.exe, tự mình làm chủ và cho phép tôi đọc ghi và mở ubfox1604.exe.

Tiếp theo, tôi mở cmdtrong chế độ quản trị viên, duyệt đến: C:\Program Files\WindowsApps\CanonicalGroupLimited.Ubuntu16.04onWindows_1604.2018.510.0_x64__79rhkp1fndgscvà nhập: ubuntu1604.exeđể xác minh rằng tôi có thể mở WSL ub Ubuntu từ cmd mà không cần phải nhắc bất cứ điều gì. Tôi đã, vì nó chỉ mở Ubuntu trong cùng một cmdcửa sổ (hiển thị nhờ màu xanh lá cây <user>@<pcname>:~$được hiển thị trong cmd).

Tiếp theo, tôi đã cố gắng truyền một đối số cho WSL Ubuntu trong khi mở nó bằng:

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

Tuy nhiên:

  1. Trả về hello worldnhưng không mở WSL ubfox.
  2. Trả về một dạng tài liệu về cách Khởi chạy một bản phân phối Linux (đính kèm trong hình bên dưới).
  3. Trả về hello worldnhưng không mở WSL ubfox.
  4. Mở Ubuntu ở vị trí của đường dẫn cmd hiện tại, nhưng không thực thi

Tài liệu nhận được trong lệnh 2.

Vì vậy, sau đó tôi đã cố gắng mở nó từ một tập lệnh bó hoặc tập lệnh powershell với:

  1. Kịch bản hàng loạt test1.bat:

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

  1. Kịch bản hàng loạt: test2.bat

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

  2. Kịch bản Powershell: test3.ps1

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

  1. Tập lệnh Powershell: test4.ps1 Process.Start ("C: \ Chương trình tập tin \ WindowsApps \ CanonicalgroupLrict.Ub Ubuntu16.04onWindows_1604.2018.510.0_x64__79rhkp1fndgsc \ ub Ubuntu1604.exe", echo "hello world");

Tuy nhiên:

  1. Mở một màn hình lớn màu đen và đóng lại trong nháy mắt.
  2. Process.Start không được công nhận là lệnh nội bộ hoặc bên ngoài
  3. Không có trong ngôn ngữ powershell
  4. Không có trong ngôn ngữ powershell.

Bây giờ tôi biết có lẽ tùy chọn vượt qua bất kỳ argum nào có thể thực thi lệnh mà không có sự tương tác của người dùng khi khởi động WSL ub Ubuntu1604 có thể bị vô hiệu hóa vì đây là một ứng dụng của cửa hàng ứng dụng (hoặc vì bất kỳ lý do nào khác).

Do đó:

  1. Nếu bất cứ ai biết liệu cú pháp của tôi có đúng không nhưng ý định của tôi
    sẽ không thể thực hiện được theo cách này, xin vui lòng cho tôi biết.
  2. Nếu có thể nhưng tôi đang làm sai, tôi sẽ đánh giá cao bất kỳ phản hồi nào về những gì tôi đang làm sai, hoặc một giải pháp thực hiện đúng.

Câu trả lời:


0

Tôi nghĩ rằng cronjobs chủ yếu là chạy định kỳ.

Để chạy lệnh tự động khi khởi động WSL Ubuntu 16.04, bạn có thể:

  1. cd để /home/<your ubuntu user name>
  2. sudo nano .bashrc
  3. Sau đó, trình soạn thảo văn bản nano sẽ tạo / mở tệp .bashrc
  4. Trong tệp đó, rất nhiều ví dụ đã được hiển thị, để thực thi lệnh của bạn khi khởi động WSL ub Ubuntu 16.04, hãy viết lệnh của bạn trên dòng đầu tiên của tệp .bashrc.
  5. Ví dụ: echo "hello world"như trong hình dưới đây.
  6. Đóng trình chỉnh sửa với: ctrl+x
  7. Lưu tập tin với Y
  8. Thoát khỏi Ubuntu
  9. Khởi động lại Ubuntu và xác minh thế giới xin chào được in trước tên người dùng của bạn.

! [Một lệnh ví dụ trong .bashrc được thực thi khi khởi động WSL ubfox.] 1

Bạn có thể thay thế hello worldlệnh bằng sudo service cron startđể kích hoạt dịch vụ cronjob. Tuy nhiên sau đó bạn vẫn được yêu cầu nhập mật khẩu thủ công. Để giải quyết vấn đề này, sử dụng: https://askubfox.com/questions/147241/execute-sudo-without-password

  1. Mở WSL ubfox 16.04 (thiết bị đầu cuối)
  2. sudo visudo
  3. Ở dưới cùng của dòng thêm dòng: `ALL = (ALL) NOPASSWD: ALL
  4. Ví dụ: với tên người dùng zq, bạn sẽ thêm dòng sau vào cuối tệp:
  5. zq ALL=(ALL) NOPASSWD: ALL
  6. ctrl + x để thoát
  7. ytiếp theo <enter>để tiết kiệm.
  8. Sau đó, một lần nữa, đóng Ubuntu và mở lại và xác minh
  9. Dịch vụ cron đang chạy tự động khi bạn khởi động / mở WSL ubfox 16.04 mà không cần nhắc mật khẩu.
  10. (bạn có thể kiểm tra bằng lệnh : sudo service cron status.)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.