Điểm:0

Không thể chạy tập lệnh Shell dưới dạng dịch vụ systemd

lá cờ hk

Tôi có một tập lệnh nhỏ để chuyển đổi ghi chú đầu vào midi thành các chức năng phương tiện (tăng âm lượng, bài hát tiếp theo, v.v.). Nó trông như thế này:

#!/bin/bash
aseqdump -p "CMD MM-1" | \
trong khi IFS=" ," đọc src ev1 ev2 ch nhãn1 dữ liệu1 nhãn2 dữ liệu2 phần còn lại; làm
    trường hợp "$ev1 $ev2 $data1" trong
        "Lưu ý trên 32") phím xdotool XF86AudioRaiseVolume ;;
        "Lưu ý trên 31") phím xdotool XF86AudioLowerVolume ;;
        "Lưu ý trên 51") phím xdotool XF86AudioMute ;;
        "Lưu ý trên 28") phím xdotool XF86AudioPrev ;;
        "Lưu ý trên 29") phím xdotool XF86AudioNext ;;
        "Lưu ý trên 50") phím xdotool XF86AudioPlay ;;
    esac
xong

Tôi có thể khởi chạy nó từ thiết bị đầu cuối và nó vẫn không thể nhận lệnh cho đến khi tôi nhấn ctrl+c. Càng xa càng tốt. Câu hỏi của tôi là, làm cách nào tôi có thể sử dụng tập lệnh này như một dịch vụ để tôi không phải lo lắng về việc nó nằm trong một thiết bị đầu cuối có thể nhìn thấy và chạy khi khởi động lại?

Tôi có một tập tin dịch vụ trong /etc/systemd/system/ với nội dung như sau:

[Đơn vị]
Mô tả=Tập lệnh Shell của tôi để đồng bộ hóa

[Dịch vụ]
ExecStart=/bin/bash /usr/bin/midi2keys.sh

[Cài đặt]
WantedBy=multi-user.target
bac0n avatar
lá cờ cn
Tôi tin rằng bạn nên bắt đầu dịch vụ của mình dưới dạng dịch vụ người dùng thay vì `/etc/systemd/user` rồi `systemctl --user enable ...`
Điểm:0
lá cờ in

Để tồn tại khi khởi động lại, bạn nên lưu tập lệnh của mình vào

cd /opt/systemd/ sau đó sudo chmod a+x YOURSCRIPTFILENAME

sau đó tạo một dịch vụ như

sudo touch /etc/systemd/system/YOURSERVICENAME.service

Sau đó Chỉnh sửa tệp bằng cách gõ sudo nano /etc/systemd/system/YOURSERVICENAME.service và sau đó gõ vào:

[Đơn vị]
Mô tả=Tập lệnh Shell của tôi để đồng bộ hóa

[Dịch vụ]
ExecStart=/bin/bash /usr/bin/midi2keys.sh

[Cài đặt]
WantedBy=multi-user.target

sau đó Ctrl + X để thoát, Y để lưu và enter để ghi tệp.

Bây giờ để cài đặt dịch vụ và đảm bảo nó tải khi khởi động, hãy gõ:

systemctl daemon-tải lại
systemctl kích hoạt YOURSERVICENAME.service

khởi động lại máy.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.