การรันเซอร์วิส systemd ในฐานะผู้ใช้อื่นที่ไม่ใช่รูท!


18

ฉันสร้างบริการต่อไปนี้ amos.service และจำเป็นต้องเรียกใช้เป็น amos (สมาชิกของกลุ่ม amos)

[Unit]
Description=AMOS Service
After=network.target

[Service]
User=amos
Group=amos
Type=simple
WorkingDirectory=/usr/share/amos
ExecStart=/usr/share/amos/amos_service.sh start
ExecStop=/usr/share/amos/amos_service.sh stop
Restart=on-failure

[Install]
WantedBy=multi-user.target

สิทธิ์ทั้งหมดได้รับการตั้งค่า/usr/share/amosเป็นamos:amos

amos_service.sh มีดังนี้:

#!/bin/bash

CUDIR=$(dirname "$0")
cd /usr/share/amos

start() {
  exec /usr/share/amos/run_amos.sh >> /var/log/amos.log 2>&1  
}

stop() {
  exec pkill java 
}

case $1 in
  start|stop) "$1" ;;
esac

cd "$CURDIR"

เมื่อฉันเรียกใช้บริการครั้งแรกโดยไม่มีการแก้ไขใด ๆ กับไดเรกทอรี, ความหมาย, เป็นของ root, และ amos.service ที่ไม่มีพารามิเตอร์ User not Group, ทุกอย่างทำงานได้ดีมาก!

เมื่อฉันเปลี่ยนการอนุญาตไดเรกทอรีเป็น amos: amos และเพิ่ม amos.service ผู้ใช้ & กลุ่ม serive จะไม่ทำงานและฉันได้รับสิ่งต่อไปนี้: ดูภาพที่แนบมา

เกิดข้อผิดพลาดหลังจากพยายามเรียกใช้บริการ


อะไรคือความแตกต่างระหว่างกรณีความสำเร็จและความล้มเหลวในแง่ของข้อความที่บันทึกไว้ใน /var/log/amos.log?
sourcejedi

นอกจากนี้การกำหนดค่านี้แปลกในที่/var/logเป็นเจ้าของโดย root ฉันคิดว่าคุณต้องการใช้ไดเรกทอรี/var/log/amos/ที่คุณสร้างขึ้นโดย amos
sourcejedi

ฉันจะสร้างดังกล่าวและจะบันทึกกลับผลลัพธ์
itprguy

คำตอบ:


11

ใช้ systemd:

เพื่อแสดงปัญหาการใช้งานjournalctl -xeหลังจากที่คุณเริ่มให้บริการ

คุณไม่ต้องการสคริปต์ทุบตีใส่ไว้ในไฟล์บริการของคุณ:

ExecStart=/usr/share/amos/run_amos.sh

ไม่จำเป็นต้องExecStopมี systemd จะหยุดกระบวนการลูกทั้งหมด journalctl -u amos.serviceคุณสามารถดูการส่งออกด้วย


4
ควรมี "=" หลังจาก ExecStart ฉันไม่สามารถแก้ไขได้เพราะการแก้ไขจะน้อยกว่า 6 ตัวอักษร
Mark Stosberg

5

ฉันคิดว่าคุณต้องการฟอร์กแทนที่จะเป็นคนง่ายๆ อย่างง่ายสมมติว่ากระบวนการของคุณไม่ออกดังนั้นเมื่อเป็นเช่นนั้นกระบวนการเรียกกระบวนการก็จะตาย

คุณอาจต้องการลบสคริปต์ amos_service.sh และวางฟังก์ชันการทำงานลงใน amos.service


จะทำการเปลี่ยนแปลงตามที่แนะนำ ... กำลังอ่านเกี่ยวกับมันและเห็นความคิดเห็นของคุณ จะบันทึกผลลัพธ์กลับคืน
itprguy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.