สิ่งที่อาจทำให้สคริปต์สำรองของฉันไม่ทำงาน


1

ฉันมีปัญหาในการเรียกใช้สคริปต์สำรองอย่างง่าย สคริปต์ต่อไปนี้ทำงานเกือบตลอดเวลา แต่บางครั้งสคริปต์จะล้มเหลวทั้งหมด (โดยไม่ต้องพิมพ์ข้อมูลบันทึกใด ๆ ) มีบางอย่างในสคริปต์ที่สามารถป้องกันไม่ให้สคริปต์ทำงานเป็นระยะหรือไม่

แม้ว่าจะรันบางครั้งข้อความบันทึกการทดสอบจะปรากฏขึ้นล่าช้าในบางครั้ง (ราวกับว่าไฟล์บันทึกการทำงานไม่ได้ถูกสัมผัสเมื่อมีการเขียนหรือการเขียนไปยังไฟล์บันทึกล่าช้า) ทำให้การวินิจฉัยทำได้ยาก

#!/bin/bash

printf "`date`: Start of Runkit backup Power Manager script:\n" >> ~/Library/Logs/Mine/tests.log

if [ $(mount | grep -c '/Volumes/Run Kit') != 1 ]
then
    printf "\tDon't copy: /Volumes/Run Kit not mounted\n" >> ~/Library/Logs/Mine/tests.log
else
    if [ $(pmset -g ac | grep -c 'Wattage') != 1 ]
    then
        printf "\tDon't copy: Not plugged in\n" >> ~/Library/Logs/Mine/tests.log
    else
        caffeinate -s -t 1200 &
        printf "\tDo copy: /Volumes/Run Kit mounted\n" >> ~/Library/Logs/Mine/tests.log
        /Users/Rax/Library/Application\ Support/SuperDuper\!/Scheduled\ Copies/SDUtil -i || open file:///Users/Rax/Library/Application\%20Support/SuperDuper\%21/Scheduled\%20Copies/Smart\%20Update\%20Run\%20Kit\%20from\%20Main.sdsp/Copy\%20Job.app
    fi
fi

printf "`date`: End of Runkit backup Power Manager script:\n" >> ~/Library/Logs/Mine/tests.log

exit 0

คุณใช้กรอบการทำงานเพื่อเปิดสคริปต์อย่างไร
bmike

ฉันใช้ตัวจัดการพลังงานเพื่อเรียกใช้ แต่ฉันได้ลบทริกเกอร์ทั้งหมดและฉันกำลังเรียกใช้ด้วยตนเองเป็นงาน Power Manager เพื่อทดสอบ 9 จาก 10 ครั้งมันทำงาน แต่บางครั้งก็ไม่มีผล สคริปต์มีข้อบกพร่องหรือมีปัญหากับPower Managerหรือไม่
orome

1
ในขณะที่คุณใช้ Power Manager คุณสามารถลดสาขาในสคริปต์ของคุณโดยเพิ่มเงื่อนไขให้กับกิจกรรมของคุณ พิจารณาเพิ่มเงื่อนไขพลังงานไฟให้สคริปต์ของคุณ ดูimgur.com/9B2bw9g
Graham Miln

1
@raxacoricofallapatorius คุณสามารถเปิดใช้งานการดีบักบน Power Manager เพื่อเพิ่มรายละเอียดของบันทึกที่สร้างขึ้นอย่างมาก จากนั้นคุณจะเห็นทริกเกอร์เงื่อนไขและการกระทำทุกอย่างที่ได้รับการประเมินและดำเนินการ: dssw.co.uk/powermanager/guide/v4/administrator/…
Graham Miln

1
@ GrahamMiln: ขอบคุณ เอกสารของ Power Manager นั้นยอดเยี่ยม ในความเป็นจริงมันเป็นที่เดียวที่ฉันพบบัญชีที่น่าพอใจของฟังก์ชั่นการจัดการพลังงานใน OS X
orome

คำตอบ:


2

ฉันจะแปลงprintfคำสั่งเป็นlogger -p user.infoคำสั่งก่อนเพราะพวกเขาสังเกตได้ง่ายในแอปคอนโซล (และ syslog) ทุกครั้งที่สคริปต์ทำงาน

คุณสามารถสร้างสคริปต์ที่สองที่เพิ่งบันทึกข้อความทดสอบหรือสร้างไฟล์เปล่า/usr/bin/touch /tmp/test.$$.logเพื่อตรวจสอบว่าสคริปต์ของคุณข้างต้นเป็นผู้ร้ายหรือเครื่องมือ Power Manager ที่คุณใช้ไม่ได้เปิดตัวสคริปต์อย่างน่าเชื่อถือ

นอกจากนี้คุณสามารถลองใช้แอปเช่นLingonเพื่อlaunchdเริ่มสคริปต์ของคุณ ระบบใช้สิ่งอำนวยความสะดวกเพื่อให้ทำงานได้เองดังนั้นจึงมีความน่าเชื่อถือสูงและบันทึกข้อผิดพลาดได้ดีหากคุณต้องการแก้ไขปัญหาที่เกิดขึ้น


ฉันไม่เห็นว่า-p user.infoจะไป syslog ข้อความที่มีลำดับความสำคัญนั้นไปไหน
orome
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.