ಬೂಟ್ನಲ್ಲಿ Mac VPN: launchd ಕೆಲಸವನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡುತ್ತದೆ, ಟನೆಲ್ ಅಲ್ಲ
lint ಪಾಸಾದ plist ರುಜುವಾತುಗಳು ಅಥವಾ ಸಿದ್ಧತೆಯ ಬಗ್ಗೆ ಏನನ್ನೂ ಸಾಬೀತುಪಡಿಸುವುದಿಲ್ಲ. ಕೆಲಸವನ್ನು ಅದರ ಸೆಷನ್ಗೆ ಹೊಂದಿಸಿ, ಕ್ಲೈಂಟ್ ಅನ್ನು ಮುಂಭಾಗದಲ್ಲಿಡಿ ಮತ್ತು ಆ ಸಂದರ್ಭದಲ್ಲಿ ಪರೀಕ್ಷಿಸಿ.
ಲಾಗಿನ್ ಆಗುವಾಗ ಕೆಲಸ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ, ಲಾಗ್ ಕ್ಲೈಂಟ್ ಪ್ರಾರಂಭವಾಗುವುದನ್ನು ತೋರಿಸುತ್ತದೆ, ಆದರೆ ಟನೆಲ್ ಎಂದಿಗೂ ಬರುತ್ತಿಲ್ಲ. ಅಥವಾ ಬಂದು ಕೆಲವು ಸೆಕೆಂಡುಗಳ ನಂತರ ಮಾಯವಾಗುತ್ತದೆ. ಎರಡೂ ಸಂದರ್ಭಗಳಲ್ಲಿ ಪ್ರಾಪರ್ಟಿ ಪಟ್ಟಿ ಬಹುಶಃ ಸರಿಯಾಗಿತ್ತು. launchd ಕೆಲಸವನ್ನು ಸ್ವೀಕರಿಸಿದಾಗ ಎರಡು ಭರವಸೆ ನೀಡಿತು: ಅದು ಒಂದು ಪ್ರಕ್ರಿಯೆಯನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡುತ್ತದೆ ಮತ್ತು ಆ ಪ್ರಕ್ರಿಯೆ ಚಾಲನೆಯಲ್ಲಿರುತ್ತದೆ. VPN ಗೆ ಎರಡೂ ಬೇಕು, ಮತ್ತು ಸರಿಯಾದ XML ಫೈಲ್ ಎರಡನ್ನೂ ನೀಡುವುದಿಲ್ಲ.
ಸರಿಯಾದ ಪ್ರಾಪರ್ಟಿ ಪಟ್ಟಿ ಕೆಲಸ ಮಾಡುವ ಸೇವೆಯಲ್ಲ
plutil -lint ರಚನೆಯನ್ನು ಪರಿಶೀಲಿಸುತ್ತದೆ. ಬೈನರಿ ಇದೆಯೇ, ಈ ಕ್ಲೈಂಟ್ ಆವೃತ್ತಿಯು ಆರ್ಗ್ಯುಮೆಂಟ್ಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆಯೇ, ಅಥವಾ ರುಜುವಾತುಗಳು ಲಭ್ಯವಿರುವ ಸಂದರ್ಭದಲ್ಲಿ ಕೆಲಸ ಪ್ರಾರಂಭವಾಗುತ್ತದೆಯೇ ಎಂದು ಅದು ಹೇಳಲಾರದು. ಇವು ಅರ್ಥಶಾಸ್ತ್ರದ ಪ್ರಶ್ನೆಗಳು, ಮತ್ತು launchd ಸಮಸ್ಯೆಗಳಂತೆ ಕಾಣುವ ಹೆಚ್ಚಿನ ವೈಫಲ್ಯಗಳಿಗೆ ಇವೇ ಕಾರಣ.
plutil -lint /Library/LaunchDaemons/com.example.vpn.plist
launchctl print system/com.example.vpn
ಕೆಲಸ ಲೋಡ್ ಆಗಿದೆ ಎಂದು ಊಹಿಸುವ ಬದಲು ಎರಡನೇ ಆಜ್ಞೆಯ ಔಟ್ಪುಟ್ ಓದಿ. ಅದು ಕೊನೆಯ ನಿರ್ಗಮನ ಸ್ಥಿತಿ ಮತ್ತು ಸೇವೆ ಚಾಲನೆಯಲ್ಲಿದೆಯೇ ಎಂದು ವರದಿ ಮಾಡುತ್ತದೆ, ಇದು ಪ್ರೊಫೈಲ್ ಮುಟ್ಟುವ ಮೊದಲು "ಎಂದಿಗೂ ಪ್ರಾರಂಭವಾಗಲಿಲ್ಲ" ಮತ್ತು "ಪ್ರಾರಂಭವಾಗಿ ಸತ್ತಿತು" ಎಂಬುದನ್ನು ಪ್ರತ್ಯೇಕಿಸುತ್ತದೆ.
ಏಜೆಂಟ್ಗಳು ಬಳಕೆದಾರ ಸೆಷನ್ ಅನ್ನು ಆನುವಂಶಿಕವಾಗಿ ಪಡೆಯುತ್ತವೆ, ಡೀಮನ್ಗಳು ಅಲ್ಲ
Apple ನ launchd ದಸ್ತಾವೇಜು ಪ್ರತಿ ಬಳಕೆದಾರನ ಏಜೆಂಟ್ಗಳನ್ನು ಸಿಸ್ಟಮ್ ಡೀಮನ್ಗಳಿಂದ ಪ್ರತ್ಯೇಕಿಸುತ್ತದೆ. ಏಜೆಂಟ್ ಲಾಗಿನ್ ಆದ ಬಳಕೆದಾರನ ಸಂದರ್ಭದಲ್ಲಿ, ಆ ಬಳಕೆದಾರನ ಕೀಚೈನ್ ಮತ್ತು ಪರಿಸರದೊಂದಿಗೆ ಚಲಿಸುತ್ತದೆ. ಡೀಮನ್ ಆ ಸೆಷನ್ ಇಲ್ಲದೆ ಚಲಿಸುತ್ತದೆ, ಮತ್ತು ಕೆಲಸವನ್ನು ಸಿಸ್ಟಮ್ ಡೈರೆಕ್ಟರಿಗೆ ಸರಿಸಿದರೆ ಬಳಕೆದಾರನ ಸಂವಾದಾತ್ಮಕ ರುಜುವಾತುಗಳು ಮರುಸೃಷ್ಟಿಯಾಗುವುದಿಲ್ಲ.
ವಿನ್ಯಾಸವನ್ನು ನಿರ್ಧರಿಸುವುದು ಈ ವ್ಯತ್ಯಾಸವೇ. ಸಂಪರ್ಕಕ್ಕೆ ವ್ಯಕ್ತಿಯ ಲಾಗಿನ್ ಅಥವಾ MFA ಪ್ರಾಂಪ್ಟ್ ಅನುಮೋದನೆ ಬೇಕಾದರೆ, ಬೆಂಬಲಿತ ವ್ಯವಸ್ಥೆ ಲಾಗಿನ್ ನಂತರ ಚಲಿಸುವ ಬಳಕೆದಾರ ಸೆಷನ್ ಕೆಲಸ. ಯಾರೂ ಲಾಗಿನ್ ಆಗದೆ ಅದು ಕೆಲಸ ಮಾಡಬೇಕಾದರೆ, ಕ್ಲೈಂಟ್ಗೆ ತನ್ನದೇ ನವೀಕರಣ ಮತ್ತು ಹಿಂಪಡೆಯುವಿಕೆ ಪ್ರಕ್ರಿಯೆಯೊಂದಿಗೆ ಅನುಮೋದಿತ ಮೇಲ್ವಿಚಾರಣಾ ರಹಿತ ಗುರುತು ಬೇಕು. ತಪ್ಪು ಸಾಲನ್ನು ಆಯ್ಕೆ ಮಾಡಿದರೆ ಸ್ವಚ್ಛವಾಗಿ ಪ್ರಾರಂಭವಾಗಿ ಮೊದಲ ದೃಢೀಕರಣ ಹಂತದಲ್ಲೇ ವಿಫಲವಾಗುವ ಕೆಲಸ ಸಿಗುತ್ತದೆ.
ಆರ್ಗ್ಯುಮೆಂಟ್ ಸರಣಿಯಲ್ಲಿ ಪಾಸ್ವರ್ಡ್ ಹಾಕುವುದರಿಂದ ಅಥವಾ ಪ್ರಮಾಣಪತ್ರ ಪರಿಶೀಲನೆಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುವುದರಿಂದ ಈ ವ್ಯತ್ಯಾಸವನ್ನು ಮುಚ್ಚಬೇಡಿ. ಎರಡೂ ದೃಢೀಕರಣ ಅಗತ್ಯವನ್ನು ಓದಬಹುದಾದ ಫೈಲ್ನಲ್ಲಿ ಶಾಶ್ವತ ರಹಸ್ಯವಾಗಿ ಬದಲಾಯಿಸುತ್ತವೆ, ಮತ್ತು ಎರಡನೆಯದು ಉತ್ತರಿಸುವ ಯಾವುದನ್ನೂ ಟನೆಲ್ ದೃಢೀಕರಿಸುತ್ತದೆ ಎಂದರ್ಥ.
ಪ್ರಕ್ರಿಯೆ ಮುಂಭಾಗದಲ್ಲಿ ಉಳಿದರೆ ಮಾತ್ರ ಮೇಲ್ವಿಚಾರಣೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ
ತಾನೇ ಡೀಮನ್ ಆಗುವ ಕ್ಲೈಂಟ್ ನಿಯಂತ್ರಣವನ್ನು ತಕ್ಷಣ launchd ಗೆ ಹಿಂತಿರುಗಿಸುತ್ತದೆ, ನಂತರ ಮೇಲ್ವಿಚಾರಕ ಈಗಾಗಲೇ ಮುಗಿದ ಪ್ರಕ್ರಿಯೆಯನ್ನು ನೋಡುತ್ತದೆ. ಟನೆಲ್ ಮೇಲಿರಬಹುದು, ಆದರೆ launchd ಕೆಲಸ ವಿಫಲವಾಯಿತು ಎಂದು ಭಾವಿಸುತ್ತದೆ ಮತ್ತು ಅದರ ಮರುಪ್ರಾರಂಭ ನೀತಿ ನೀವು ಉದ್ದೇಶಿಸದ ಕೆಲಸ ಮಾಡುತ್ತದೆ.
ಕ್ಲೈಂಟ್ನ ದಾಖಲಿತ ಮುಂಭಾಗ ಅಥವಾ ಸೇವಾ ಮೋಡ್ ಬಳಸಿ. ಉತ್ಪನ್ನಕ್ಕೆ ತನ್ನದೇ ಬೆಂಬಲಿತ ಪ್ರಾರಂಭ ವೈಶಿಷ್ಟ್ಯ ಇದ್ದರೆ, ಆ ವೈಶಿಷ್ಟ್ಯಕ್ಕೆ ಮುಂಭಾಗದಲ್ಲಿ ಉಳಿಯುವುದು ಮತ್ತು ನೆಟ್ವರ್ಕ್ ಸ್ಟ್ಯಾಕ್ಗೆ ಹಸ್ತಾಂತರಿಸುವುದು ಈಗಾಗಲೇ ತಿಳಿದಿದೆ; ಕಸ್ಟಮ್ ಕೆಲಸ ಬೇರೆ ವಿನ್ಯಾಸ, ಅದರ ಸುಧಾರಣೆ ಅಲ್ಲ.
ಕೆಲಸಕ್ಕೆ ಅನನ್ಯ ಲೇಬಲ್, ಉದ್ದೇಶಿತ ಎಕ್ಸಿಕ್ಯುಟೆಬಲ್ ಮತ್ತು ಉದ್ದೇಶಪೂರ್ವಕ ಆರ್ಗ್ಯುಮೆಂಟ್ ಸರಣಿ ನೀಡಿ. ಸರಣಿ shell ಆಜ್ಞಾ ಸಾಲಲ್ಲ, ಆದ್ದರಿಂದ ಪೈಪ್ಗಳು ಮತ್ತು ಮರುನಿರ್ದೇಶನಗಳು ಅಲ್ಲಿ ಕೆಲಸ ಮಾಡುವುದಿಲ್ಲ, ಮತ್ತು ಉಲ್ಲೇಖಗಳ ವರ್ತನೆ ಬೇರೆ. ನಿರ್ವಾಹಕರ ಟರ್ಮಿನಲ್ನಲ್ಲಿ ಯಶಸ್ವಿಯಾಗುವ ಆಜ್ಞೆ ಅತ್ಯುತ್ತಮವಾಗಿ ಪ್ರಾಥಮಿಕ ಪರಿಶೀಲನೆ ಮಾತ್ರ.
ರುಜುವಾತುಗಳು ಪ್ರಾಂಪ್ಟ್ ಇಲ್ಲದೆ ಕೆಲಸ ಮಾಡಬೇಕು
ಮೇಲ್ವಿಚಾರಣಾ ರಹಿತ ಕಾರ್ಯಾಚರಣೆ ರುಜುವಾತು ಸಮಸ್ಯೆಯನ್ನು ತೆಗೆದುಹಾಕುವ ಬದಲು ಸ್ಥಳಾಂತರಿಸುತ್ತದೆ. ಯಾರೋ ಗುರುತನ್ನು ಹೊಂದಿರಬೇಕು, ಅದು ಎಷ್ಟು ಕಾಲ ಬದುಕುತ್ತದೆ ಎಂದು ನಿರ್ಧರಿಸಬೇಕು ಮತ್ತು ಅದನ್ನು ಹೇಗೆ ಬದಲಾಯಿಸಲಾಗುತ್ತದೆ ಎಂದು ದಾಖಲಿಸಬೇಕು. ಅವಧಿ ಮೇಲ್ವಿಚಾರಣೆ ಇಲ್ಲದ ಪ್ರಮಾಣಪತ್ರ ಕ್ಯಾಲೆಂಡರ್ನಲ್ಲಿ ದಿನಾಂಕವಿರುವ ಅಡಚಣೆಯಾಗುತ್ತದೆ.
ರಹಸ್ಯಗಳನ್ನು ಆರ್ಗ್ಯುಮೆಂಟ್ಗಳಿಂದ ಮತ್ತು ಕೆಲಸದ ಪ್ರಮಾಣಿತ ಔಟ್ಪುಟ್ನಿಂದ ಹೊರಗಿಡಿ. ಕ್ಲೈಂಟ್ ಸಂರಕ್ಷಿತ ಭಂಡಾರದಿಂದ ರುಜುವಾತು ಓದುವುದನ್ನು ಬೆಂಬಲಿಸಿದರೆ, ಆ ಮಾರ್ಗ ಬಳಸಿ, ಮತ್ತು ಕೆಲಸದ ಕಾರ್ಯಾಚರಣಾ ಸಂದರ್ಭ ಭಂಡಾರವನ್ನು ತಲುಪಬಹುದೇ ಎಂದು ಪರಿಶೀಲಿಸಿ. root ಆಗಿ ಚಲಿಸುವ ಡೀಮನ್ ಸಾಮಾನ್ಯವಾಗಿ ಲಾಗಿನ್ ಕೀಚೈನ್ ಐಟಂ ಓದಲಾರದು, ಮತ್ತು ಇದು ಸಿಸ್ಟಮ್ ಸಂದರ್ಭದಲ್ಲಿ ಮಾತ್ರ ಕಾಣುವ ವಿವರ.
ಸಿದ್ಧ ಎಂದರೇನು ಎಂದು ವ್ಯಾಖ್ಯಾನಿಸಿ, ನಂತರ ಅಲ್ಲೇ ಪರೀಕ್ಷಿಸಿ
ಯಶಸ್ವಿ ಪ್ರಾರಂಭ ಪ್ರಕ್ರಿಯೆ ಪ್ರಾರಂಭವಾಯಿತು ಎಂದು ಸಾಬೀತುಪಡಿಸುತ್ತದೆ. ನೆಟ್ವರ್ಕ್ ಮೇಲಿದೆ, ಗೇಟ್ವೇ ಗುರುತನ್ನು ಸ್ವೀಕರಿಸಿದೆ ಅಥವಾ ಖಾಸಗಿ ಅಪ್ಲಿಕೇಶನ್ ತಲುಪಬಹುದು ಎಂದು ಸಾಬೀತುಪಡಿಸುವುದಿಲ್ಲ. ಬೇರೆ ಏನಾದರೂ ಟನೆಲ್ ಅನ್ನು ಅವಲಂಬಿಸಿದ್ದರೆ, ಅದಕ್ಕೆ ಕೆಲಸದ ಪ್ರಾರಂಭ ಸಮಯವಲ್ಲ, ಸಂಪರ್ಕವನ್ನು ಪ್ರತಿಬಿಂಬಿಸುವ ಸಿದ್ಧತೆ ಸಂಕೇತ ಬೇಕು.
ಮರುಪ್ರಯತ್ನಗಳು ಸೀಮಿತವಾಗಿರಬೇಕು ಮತ್ತು ಕಾಣೆಯಾದ ನೆಟ್ವರ್ಕ್ ಅನ್ನು ನಿರಾಕರಿಸಿದ ರುಜುವಾತಿನಿಂದ ಪ್ರತ್ಯೇಕಿಸಬೇಕು. ಪ್ರತಿ ವೈಫಲ್ಯದಲ್ಲೂ ಮರುಪ್ರಾರಂಭಿಸುವುದು ಅವಧಿ ಮೀರಿದ ಪ್ರಮಾಣಪತ್ರವನ್ನು ಸರಿಪಡಿಸಲಾರದು ಮತ್ತು ನಿಜವಾದದ್ದನ್ನು ಮರೆಮಾಡುವ ಒಂದೇ ರೀತಿಯ ಪ್ರಯತ್ನಗಳಿಂದ ತುಂಬಿದ ಲಾಗ್ ಉತ್ಪಾದಿಸುತ್ತದೆ.
ಕೆಲಸವನ್ನು ಅದು ನಿಜವಾಗಿ ಚಲಿಸುವ ಸಂದರ್ಭದಲ್ಲಿ ಸ್ವೀಕರಿಸಿ: ಬೂಟ್ನಲ್ಲಿ ನೆಟ್ವರ್ಕ್ ಇಲ್ಲ, ಸಾಮಾನ್ಯ ಲಾಗಿನ್, ನಿದ್ರೆಯಿಂದ ಎಚ್ಚರ, ಮತ್ತು ನಿಯಂತ್ರಿತ ನಿಲುಗಡೆ. ನಂತರ ಕೆಲಸದ ಲೇಬಲ್, ಕ್ಲೈಂಟ್ ಆವೃತ್ತಿ ಮತ್ತು ಪ್ರೊಫೈಲ್ ಪರಿಷ್ಕರಣೆಯನ್ನು ಒಟ್ಟಿಗೆ ದಾಖಲಿಸಿ, ಇದರಿಂದ ಮುಂದಿನ ವ್ಯಕ್ತಿ ಒಮ್ಮೆ ಕೆಲಸ ಮಾಡಿದ ಫೈಲ್ ಬದಲು ಜವಾಬ್ದಾರಿ ನಿರ್ಧರಿಸಬಹುದಾದ ಸೇವೆಯನ್ನು ಆನುವಂಶಿಕವಾಗಿ ಪಡೆಯುತ್ತಾರೆ.