Điểm:0

Xác minh trong ExecStartPre nếu nhị phân bash tồn tại

lá cờ it

Tôi muốn dịch vụ của mình chỉ bắt đầu nếu một dịch vụ khác không hoạt động. Để làm như vậy, như đã giải thích trong câu hỏi khác này, Tôi sẽ làm:

ExecStartPre=/bin/bash -xc '/usr/bin/systemctl is-active --quiet other-unit.service && thoát 1 || thoát 0'

Tuy nhiên, có một khả năng nhỏ là HĐH không bao gồm /bin/bash. Trong trường hợp đó, tôi vẫn muốn dịch vụ bắt đầu. Tôi đã cố gắng đạt được điều này bằng cách sử dụng:

ExecStartPre= which bash 2>/dev/null && /usr/bin/bash -xc '/usr/bin/systemctl is-enabled --quiet nm-cloud-setup.service && thoát 1 || thoát 0' || thoát 0

Nhưng systemd phàn nàn:

cái nào[1122772]: /usr/bin/cái nào: tùy chọn không hợp lệ -- 'x'
cái nào [1122772]: /usr/bin/cái nào: tùy chọn không hợp lệ -- 'c'
cái nào[1122772]: /usr/bin/cái nào: không && trong (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin)

Tôi đoán ExecStartPre= khá hạn chế. Có thể đạt được những gì tôi muốn?

Michael Hampton avatar
lá cờ cz
Tại sao bạn gọi bash thay vì /bin/sh?
mosquetero avatar
lá cờ it
Tôi đã dán những gì câu hỏi khác đã trả lời. Nếu tôi đổi thành /usr/bin/sh, tôi có thể chắc chắn rằng nó sẽ là một phần của tất cả các hệ điều hành không?
Michael Hampton avatar
lá cờ cz
Tôi đã nói `/bin/sh`, không phải `/usr/bin/sh`. Cái trước tồn tại trên mọi thứ mơ hồ giống Unix trong 50 năm qua. Nó thậm chí còn trên điện thoại của bạn. Tôi không nói gì về cái sau và sẽ không tính đến nó.
mosquetero avatar
lá cờ it
Vâng. Trong trường hợp đó, tôi không cần kiểm tra xem `/bin/sh` có khả dụng hay không, cảm ơn. Bạn có thể viết câu trả lời đó để tôi có thể đánh dấu câu hỏi là đã trả lời không?
Michael Hampton avatar
lá cờ cz
VÂNG. Nhưng chỉ vì tò mò, tôi muốn biết hệ thống nào bao gồm systemd chứ không phải bash.
mosquetero avatar
lá cờ it
Tôi chỉ muốn bao gồm tất cả các trường hợp có thể. Tôi đã thấy một hệ điều hành Alpine sử dụng systemd vì người dùng đã cài đặt nó bằng cách nào đó
Điểm:1
lá cờ cz

Thay vì gọi bash, bạn nên cân nhắc gọi Bourne shell /bin/sh đã xuất hiện khá nhiều kể từ khi bắt đầu Unix và tồn tại trên mọi thứ giống như Unix theo đúng nghĩa đen, cho đến tận điện thoại của bạn. (Mặc dù trên các hệ thống hiện đại, nó thường được thay thế bằng một lớp vỏ có khả năng hơn một chút chạy ở chế độ tương thích với lớp vỏ Bourne khi được gọi là /bin/sh.)

Đă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.