ਸਾਡੇ ਵਾਚਡੌਗ ਨੇ ਉਹ ਸੇਵਾਵਾਂ ਦੁਬਾਰਾ ਸ਼ੁਰੂ ਕਰ ਦਿੱਤੀਆਂ ਜਿਨ੍ਹਾਂ ਨੂੰ ਅਸੀਂ ਜਾਣ-ਬੁੱਝ ਕੇ ਰੋਕਿਆ ਸੀ
Ops
ਸਾਡੇ ਵਾਚਡੌਗਾਂ ਵਿੱਚੋਂ ਇੱਕ ਉਹਨਾਂ ਸਾਰੀਆਂ ਸੇਵਾਵਾਂ ਨੂੰ ਸ਼ੁਰੂ ਕਰ ਦਿੰਦਾ ਹੈ ਜੋ ਇਨੇਬਲਡ ਹਨ ਪਰ ਚੱਲ ਨਹੀਂ ਰਹੀਆਂ। ਅਕਤੂਬਰ ਵਿੱਚ ਦੋ ਵਾਰ ਇਸਨੇ ਉਹ ਸੇਵਾਵਾਂ ਸ਼ੁਰੂ ਕਰ ਦਿੱਤੀਆਂ ਜਿਨ੍ਹਾਂ ਨੂੰ ਅਸੀਂ ਜਾਣ-ਬੁੱਝ ਕੇ ਰੋਕਿਆ ਸੀ। ਦੂਜੀ ਵਾਰ, ਸਾਡੀਆਂ ਸਾਈਟਾਂ ਵਿੱਚੋਂ ਇੱਕ ਦੇ ਵਿਜ਼ਿਟਰਾਂ ਨੂੰ ਲਗਭਗ 45 ਮਿੰਟ ਤੱਕ ਗਲਤੀਆਂ ਆਈਆਂ।
ਉਹ ਵਾਚਡੌਗ ਕਿਉਂ ਮੌਜੂਦ ਹੈ
ਇੱਕ ਸੇਵਾ ਜੋ SIGTERM ਮਿਲਣ 'ਤੇ ਸਾਫ਼-ਸੁਥਰਾ ਐਗਜ਼ਿਟ ਕਰਦੀ ਹੈ, ਉਦਾਹਰਣ ਵਜੋਂ ਕਿਉਂਕਿ ਕਿਸੇ ਨੇ ਨਾਮ ਨਾਲ ਉਸਨੂੰ ਮਾਰ ਦਿੱਤਾ ਸੀ, systemd ਦੀ ਨਜ਼ਰ ਵਿੱਚ "ਫੇਲਡ" ਨਹੀਂ ਹੁੰਦੀ। Restart=on-failure ਉਸਨੂੰ ਵਾਪਸ ਨਹੀਂ ਲਿਆਉਂਦਾ, ਅਤੇ systemctl --failed ਉਸਨੂੰ ਲਿਸਟ ਨਹੀਂ ਕਰਦਾ। ਇਹ ਤਦ ਤੱਕ ਡਾਊਨ ਰਹਿੰਦੀ ਹੈ ਜਦੋਂ ਤੱਕ ਕੋਈ ਇਤਫ਼ਾਕਨ ਨੋਟਿਸ ਨਹੀਂ ਕਰ ਲੈਂਦਾ। ਇਸ ਲਈ ਵਾਚਡੌਗ ਉਹਨਾਂ ਸੇਵਾਵਾਂ ਨੂੰ ਲੱਭਦਾ ਹੈ ਜੋ ਇਨੇਬਲਡ ਹਨ ਪਰ ਚੱਲ ਨਹੀਂ ਰਹੀਆਂ, ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਸ਼ੁਰੂ ਕਰ ਦਿੰਦਾ ਹੈ।
ਸਮੱਸਿਆ ਇਹ ਹੈ ਕਿ ਇੱਕ ਸੇਵਾ ਜਿਸਨੂੰ ਤੁਸੀਂ ਹੱਥੀਂ ਰੋਕਿਆ ਹੈ, ਬਿਲਕੁਲ ਉਹੀ ਦਿਖਾਈ ਦਿੰਦੀ ਹੈ।
ਪਹਿਲੀ ਵਾਰ
7 ਅਕਤੂਬਰ ਨੂੰ ਅਸੀਂ 12:47 ਵਜੇ systemctl stop ਨਾਲ ਇੱਕ ਵੀਡੀਓ ਵਰਕਰ ਨੂੰ ਰੋਕਿਆ ਤਾਂ ਜੋ ਉਸਦੀ ਜੌਬ ਕਯੂ ਨੂੰ ਐਡਿਟ ਕੀਤਾ ਜਾ ਸਕੇ। 12:55 ਵਜੇ ਇਹ ਦੁਬਾਰਾ ਚੱਲ ਰਿਹਾ ਸੀ: ਵਾਚਡੌਗ ਨੇ ਇਸਨੂੰ ਸ਼ੁਰੂ ਕਰ ਦਿੱਤਾ ਸੀ।
ਦੂਜੀ ਵਾਰ
21 ਅਕਤੂਬਰ ਨੂੰ ਸਾਨੂੰ ਉਸ ਮਸ਼ੀਨ ਦੀ ਮੈਮੋਰੀ ਚਾਹੀਦੀ ਸੀ ਜੋ ਸਾਡੀਆਂ ਦੋ ਸਾਈਟਾਂ ਵੀ ਸਰਵ ਕਰਦੀ ਹੈ, ਇੱਕ ਮਾਡਲ ਟੈਸਟ ਲਈ। ਇੱਕ ਸਕ੍ਰਿਪਟ ਨੇ ਸਾਈਟਾਂ ਦੇ ਵੈੱਬ ਐਪਸ, ਇੱਕ ਸਿੰਕ ਜੌਬ ਅਤੇ ਇੱਕ ਡਾਟਾਬੇਸ ਕੰਟੇਨਰ ਨੂੰ ਰੋਕ ਦਿੱਤਾ, ਦੁਬਾਰਾ systemctl stop ਨਾਲ। ਲਗਭਗ ਪੰਜ ਮਿੰਟ ਬਾਅਦ ਸਾਈਟਾਂ ਨੂੰ ਵੇਖਣ ਵਾਲੇ ਇੱਕ ਟਾਈਮਰ ਨੇ, ਅਤੇ 19:14 ਵਜੇ ਵਾਚਡੌਗ ਨੇ, ਟਨਲ ਅਤੇ ਵੈੱਬ ਐਪਸ ਨੂੰ ਵਾਪਸ ਲਿਆਂਦਾ।
ਟਨਲ ਨੇ ਦੁਬਾਰਾ ਟ੍ਰੈਫਿਕ ਲੈਣਾ ਸ਼ੁਰੂ ਕਰ ਦਿੱਤਾ, ਪਰ ਵੈੱਬ ਐਪਸ ਜਵਾਬ ਨਹੀਂ ਦੇ ਸਕੇ: ਟੈਸਟ ਅਧੀਨ ਮਾਡਲ ਨੇ ਮਸ਼ੀਨ ਦੀ 114 GiB ਮੈਮੋਰੀ ਫੜੀ ਹੋਈ ਸੀ। ਲਗਭਗ 19:14 ਤੋਂ 20:00 ਵਜੇ ਤੱਕ, ਕੁਝ ਵਿਜ਼ਿਟਰਾਂ ਨੂੰ 502 ਗਲਤੀਆਂ ਆਈਆਂ। 20:00 ਵਜੇ ਅਸੀਂ ਟਨਲ, ਵੈੱਬ ਐਪਸ ਅਤੇ ਸਿੰਕ ਜੌਬ ਨੂੰ ਡਿਸੇਬਲ ਕਰ ਦਿੱਤਾ, ਅਤੇ ਵਾਚ ਟਾਈਮਰ ਨੂੰ ਰੋਕ ਦਿੱਤਾ।
ਹੁਣ ਅਸੀਂ ਜੋ ਨਿਯਮ ਵਰਤਦੇ ਹਾਂ
- ਕਿਸੇ ਸੇਵਾ ਨੂੰ ਡਿਸੇਬਲ ਕਰਕੇ ਪੌਜ਼ ਕਰੋ:
sudo systemctl disable --now <unit>। ਇਸਨੂੰsudo systemctl enable --now <unit>ਨਾਲ ਵਾਪਸ ਲਿਆਓ। ਸਾਡਾ ਵਾਚਡੌਗ ਸਿਰਫ਼ ਇਨੇਬਲਡ ਸੇਵਾਵਾਂ ਨੂੰ ਵੇਖਦਾ ਹੈ, ਇਸ ਲਈ ਇੱਕ ਡਿਸੇਬਲਡ ਸੇਵਾ ਨੂੰ ਛੇੜਿਆ ਨਹੀਂ ਜਾਂਦਾ। - ਉਹਨਾਂ ਸਾਰੀਆਂ ਚੀਜ਼ਾਂ ਨੂੰ ਪੌਜ਼ ਕਰੋ ਜੋ ਇਸਨੂੰ ਵਾਪਸ ਲਿਆ ਸਕਦੀਆਂ ਹਨ: ਇਸਦੇ ਸਾਹਮਣੇ ਵਾਲਾ ਟਨਲ ਅਤੇ ਇਸਨੂੰ ਵੇਖਣ ਵਾਲਾ ਕੋਈ ਵੀ ਟਾਈਮਰ।
- ਛੋਟਾ ਸਟੌਪ ਇੱਕ ਰੇਸ ਹੈ। ਜੇ ਤੁਸੀਂ ਸਿਰਫ਼
stopਵਰਤਦੇ ਹੋ, ਤਾਂ ਅਗਲੀ ਜਾਂਚ ਤੋਂ ਪਹਿਲਾਂ ਖਤਮ ਕਰੋ, ਜੋ ਸਾਡੀਆਂ ਮਸ਼ੀਨਾਂ 'ਤੇ ਮਿੰਟਾਂ ਵਿੱਚ ਆਉਂਦੀ ਹੈ।
ਉਹੀ ਮਹੀਨਿਆਂ ਦੇ ਦੋ ਹੋਰ systemd ਟਰੈਪ
systemctl mask --runtime/etc/systemd/system ਵਿੱਚ ਮੌਜੂਦ ਯੂਨਿਟ ਫਾਈਲ ਲਈ ਕੁਝ ਵੀ ਨਹੀਂ ਕਰਦਾ। /etc ਵਿੱਚ ਯੂਨਿਟਸ /run ਵਿੱਚ ਮੌਜੂਦ ਰਨਟਾਈਮ ਮਾਸਕ ਨਾਲੋਂ ਤਰਜੀਹੀ ਹੁੰਦੀਆਂ ਹਨ, ਇਸ ਲਈ ਕਮਾਂਡ ਸਫਲ ਹੁੰਦੀ ਹੈ ਅਤੇ ਸਰਵਿਸ ਫਿਰ ਵੀ ਸ਼ੁਰੂ ਹੋ ਜਾਂਦੀ ਹੈ। ਸਰਵਿਸ ਨੂੰ ਰੋਕਣ ਲਈ, ਅਸੀਂConditionPathExists=!/etc/<name>.holdਵਾਲਾ ਡ੍ਰੌਪ-ਇਨ ਵਰਤਦੇ ਹਾਂ: ਜਦੋਂ ਤੱਕ ਉਹ ਫਾਈਲ ਮੌਜੂਦ ਹੈ, ਸਰਵਿਸ ਬੂਟ ਤੇ ਵੀ ਅਤੇ ਹੱਥੀਂ ਵੀ ਸ਼ੁਰੂ ਨਹੀਂ ਹੋਵੇਗੀ।systemctl is-activeਚੱਲ ਰਹੇ oneshot ਸਰਵਿਸ ਨੂੰ inactive ਕਹਿੰਦਾ ਹੈ। ਜਦੋਂType=oneshotਸਰਵਿਸ ਚੱਲ ਰਹੀ ਹੁੰਦੀ ਹੈ, ਤਾਂ ਉਸਦੀ ਸਥਿਤੀ "activating" ਹੁੰਦੀ ਹੈ, ਇਸ ਲਈis-activeਉਹੀ ਪ੍ਰਿੰਟ ਕਰਦਾ ਹੈ ਅਤੇ 3 ਵਾਪਸ ਕਰਦਾ ਹੈ।while systemctl is-active --quiet job.service; do sleep 60; doneਵਰਗਾ ਲੂਪ, ਜੋ ਰਾਤ ਦੇ ਜੌਬ ਦਾ ਇੰਤਜ਼ਾਰ ਕਰਨ ਲਈ ਬਣਾਇਆ ਗਿਆ ਸੀ, ਤੁਰੰਤ ਬਾਹਰ ਨਿਕਲ ਜਾਂਦਾ ਹੈ। ਬਦਲੇ ਵਿੱਚ ਸਥਿਤੀ ਪੜ੍ਹੋ: active, activating, reloading ਜਾਂ deactivating ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਇਹ ਅਜੇ ਵੀ ਚੱਲ ਰਹੀ ਹੈ।
Factory Floor ਉਹਨਾਂ ਚਾਲੂ ਸਰਵਿਸਾਂ ਦੀ ਨਿਗਰਾਨੀ ਕਰਦਾ ਹੈ ਜੋ ਚੱਲ ਨਹੀਂ ਰਹੀਆਂ। ਡਿਫੌਲਟ ਵਿੱਚ ਇਹ ਸਿਰਫ਼ ਉਹਨਾਂ ਬਾਰੇ ਰਿਪੋਰਟ ਕਰਦਾ ਹੈ, ਅਤੇ ਇਹ ਉਹਨਾਂ ਨੂੰ ਸਿਰਫ਼ ਤਦ ਹੀ ਸ਼ੁਰੂ ਕਰਦਾ ਹੈ ਜੇ ਤੁਸੀਂ ਉਹ ਵਿਕਲਪ ਚਾਲੂ ਕਰੋ। ਵਰਜਨ 1.0.3 ਤੋਂ, ਇਸਦੀ ਅਲਰਟ ਇਹ ਵੀ ਦੱਸਦੀ ਹੈ ਕਿ ਕਿਸੇ ਸਰਵਿਸ ਨੂੰ ਜਾਣਬੁੱਝ ਕੇ ਕਿਵੇਂ ਰੋਕਣਾ ਹੈ, ਅਤੇ ਇਸਦਾ ਰਨਬੁੱਕ ਵੀ ਇਹੀ ਕਹਿੰਦਾ ਹੈ।