ฉันจะป้องกันการนอนไม่ให้สับสนได้อย่างไร


0

ฉันรันสคริปต์สองตัว ทั้งสองเป็นรหัสเดียวกัน แต่พวกเขาต้องทำงาน 5 นาทีเพื่อป้องกันการชนกัน สคริปต์แรก: #! / bin / sh

# First run
line="Bonus check"
        stamp=$(date +%Y%m%d-%H%M)
      # sleep 90s
        echo "$stamp\t $line" >> /home/rdanner3/Desktop/CardParty.log
        {
export DISPLAY=:0.0
google-chrome [URL masked]
        }
sleep 45s
# google-chrome
pkill -f chrome

# Second run to seventh run identical to above; stripped for brevity.

สคริปต์ที่สอง (โปรดสังเกตว่ามันเป็นรหัสเดียวกันโดยทั้งคู่จะต้องมีลูปเพื่อความมีสติ!)

#!/bin/sh

# 1st run
line="Bonus checked."
stamp=$(date +%Y%m%d-%H%M)
# sleep 90s
echo "$stamp\t $line" >> /home/rdanner3/Desktop/Slots.log
{
export DISPLAY=:0.0
google-chrome [URL masked]
}
sleep 45s
# google-chrome
pkill -f chrome

# 2nd run to 7th run identical to above code...stripped for brevity

จะเกิดอะไรขึ้นเมื่อสคริปต์มาถึงการรันครั้งที่สอง พวกเขาทำงานภายในไม่กี่วินาทีของกันและกันแม้งาน cron ที่เริ่มต้นพวกเขาห่างกัน 5 นาที เห็นได้ชัดว่าสวย (จากไฟล์บันทึกที่สคริปต์สองตัวเขียน) ว่าพวกเขากำลังแยกตัวออกจากกันไม่กี่วินาทีไม่ใช่ในลำดับที่ถูกต้อง การเปลี่ยนสคริปต์ตัวที่สองเป็น (พูด) แอชหรือทุบตีทำอะไรที่ดีเพื่อหลีกเลี่ยงคำสั่ง sleep ของสคริปต์ทั้งสองไม่ให้เกิดความสับสนซึ่งกันและกัน หรือฉันกำลังทำผิดพลาดอื่น ๆ (เช่นจำเป็นต้องยกเลิกการคอมเม้นต์ google-chrome ครั้งที่สองเพื่อให้ pkill ล้างอากาศออก)

สังเกตเห็นปัญหาเมื่อวานนี้ฉันตัดสินใจว่าต้องการความช่วยเหลือเล็กน้อย ดังนั้นฉันมาที่นี่เพื่อมัน

คำตอบ:


2

ความผิดพลาดอาจขึ้นอยู่กับการนอนหลับสำหรับช่วงเวลาที่แน่นอนแทนที่จะเป็นจังหวะที่สัมพันธ์กัน สิ่งของก่อนนอนอาจใช้เวลาในการเปลี่ยนแปลงต่างกัน

หลังจากลบซ้ำของรหัสที่ผมอาจจะต้องการใช้ในวงหรือมีโอกาสมากขึ้นใช้การใช้งานที่มีความซับซ้อนมากขึ้นของatcron

หากเวลาเริ่มต้นที่แน่นอนนั้นไม่สำคัญฉันจะเรียกสองฟังก์ชันตามลำดับในลูปแบบง่าย รวมสคริปต์ทั้งสองเข้าด้วยกัน


ส่วนหนึ่งของปัญหาคือ cron นั้นไม่สามารถทำได้ในช่วงเวลา 183 นาที ช่วงเวลานั้นมีความสำคัญต่อการทำงานของหนึ่งบรรทัดที่ยกของหนักและด้วยเหตุผลบางอย่างที่แปลกประหลาด Windows มีปัญหาในการทำช่วงเวลานี้เป็นศูนย์ ลองใช้รูปแบบการกำหนดเวลาตามยุคสมัย แต่ก็ไม่ได้ผลดีนักเนื่องจากการเรียกใช้ครั้งที่สองของเบราว์เซอร์ไม่ได้ให้ความเห็นใด ๆ สคริปต์ทั้งสองจึงทำงานได้อย่างไร้ที่ติ ยังคงเกาหัวของฉันมากกว่าหนึ่งเนื่องจากเบราว์เซอร์ที่เรียกใช้ครั้งที่สองเป็นกระบองที่น่าเกลียด
Raymond Danner

ในบันทึกการทำความสะอาด (อ้างอิงถึงรหัสสคริปต์) คุณจะแนะนำประเภทของลูปแบบใด ฉันจะยอมรับว่าฉันค่อนข้างใหม่ในการเขียนสคริปต์สำหรับ Linux แม้ว่าฉันได้ทำลูปในสคริปต์สำหรับทั้ง DOS (ตลอดทางกลับไปที่ ProDOS ของ Apple เชื่อหรือไม่ ... ตามด้วย PC-DOS และ MS- DOS) และ Windows
Raymond Danner

@Raymond ฉันไม่แน่ใจว่าฉันสามารถแนะนำรหัสเฉพาะ แต่ถ้าคุณมีการอ่านทรัพยากรอย่างรวดเร็วเช่นอินโทร bash loopคุณควรจะสามารถหาโครงสร้างที่ตรงกับความต้องการของคุณ อาจจะเป็นเช่นfor url in "http://a.com" "http://b.com"; do google-chrome $url; sleep 45s; done
RedGrittyBrick
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.