सिस्टमड सर्विस स्क्रिप्ट बंद के दौरान लॉगिंग नहीं


2

पृष्ठभूमि

NetworkManager dispatcher.d / pre-down.d स्क्रिप्ट नहीं चलाता है, इसलिए मैंने एक systemd- सेवा स्क्रिप्ट बनाई है। यह स्टार्टअप और शटडाउन के दौरान अच्छी तरह से काम कर रहा है, लेकिन शटडाउन के दौरान यह syslog को नहीं लिखता है। फ़ाइल /etc/iptables.rules को शटडाउन के दौरान अद्यतन किया जाता है, लेकिन कुछ भी लॉग / var / log / syslog में लॉग नहीं होता है।

चल रहे टर्मिनल से ...

systemctl restart network-down

... सिसलॉग को सूचना लिखता है। लेकिन सिस्टम रिबूट के दौरान नहीं।

सवाल

क्या मेरी सेवा-लिपि में कुछ कमी है?

स्क्रिप्ट: /etc/systemd/system/network-down.service:

[Unit]
Description=Firewall Iptables Save
Wants=network-online.target
After=network.target network-online.target

[Service]
Type=oneshot
ExecStart=/bin/true
ExecStop=/bin/bash /etc/NetworkManager/dispatcher.d/pre-down.d/01-firewall-pre-down network pre-down
RemainAfterExit=yes
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=Firewall Iptables Save

[Install]
WantedBy=multi-user.target

स्क्रिप्ट: 01-फ़ायरवॉल-प्री-डाउन:

if [ -x /usr/bin/logger ]; then
            LOGGER="/usr/bin/logger -s -p daemon.info -t FirewallHandler[PREDOWN]"
    else
            LOGGER=echo
    fi

case "$2" in

        pre-up)
                if [ ! -r /etc/iptables.rules ]; then
                        ${LOGGER} "No iptables rules exist to restore."
                        return
                fi
                if [ ! -x /sbin/iptables-restore ]; then
                        ${LOGGER} "No program exists to restore iptables rules."
                        return
                fi
                ${LOGGER} "Restoring iptables rules (pre-up)"
                /sbin/iptables-restore -c < /etc/iptables.rules
                ;;
        pre-down)
                if [ ! -x /sbin/iptables-save ]; then
                        ${LOGGER} "No program exists to save iptables rules."
                        return
                fi
                ${LOGGER} "Saving iptables rules. (pre-down)"
                /sbin/iptables-save -c > /etc/iptables.rules
                ;;
        *)
                 ${LOGGER} "Nothing to do for case: ($2)"
                ;;
esac

rsyslogdआपकी स्क्रिप्ट चलने से पहले शायद रोक दिया गया हो ? आप syslogअपने आउटपुट / त्रुटि सुविधा के रूप में उपयोग कर रहे हैं ।
20

@XubuntuLover क्या आप उस समाधान को केवल कहने के बजाय एक उत्तर के रूप में संपादित कर सकते हैं

जवाबों:


0

परिवर्तन:

After=network.target network-online.target

सेवा:

After=network.target network-online.target rsyslog.service

अब यह लॉगिंग होना चाहिए!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.