คำถามติดแท็ก sleep

คำสั่งสำหรับการหน่วงเวลาการทำงานของโปรแกรมตามระยะเวลาที่กำหนด สำหรับโหมดพลังงานต่ำให้ใช้ * ระงับ * แทน

6
วิ่งวนซ้ำอย่างแม่นยำหนึ่งครั้งต่อวินาที
ฉันใช้วงนี้เพื่อตรวจสอบและพิมพ์บางสิ่งทุกวินาที อย่างไรก็ตามเนื่องจากการคำนวณอาจใช้เวลาสักสองสามร้อยมิลลิวินาทีเวลาที่พิมพ์จึงข้ามหนึ่งวินาที มีวิธีใดที่จะเขียนลูปที่ฉันรับประกันว่าจะได้รับผลงานพิมพ์ทุกวินาทีหรือไม่? (แน่นอนว่าการคำนวณในลูปนั้นใช้เวลาน้อยกว่าหนึ่งวินาที :)) while true; do TIME=$(date +%H:%M:%S) # some calculations which take a few hundred milliseconds FOO=... BAR=... printf '%s %s %s\n' $TIME $FOO $BAR sleep 1 done
33 bash  timestamps  sleep 

10
Shell: เป็นไปได้ไหมที่จะชะลอคำสั่งโดยไม่ใช้ `sleep '?
มีการทดแทนทางเลือกหรือเทคนิคทุบตีสำหรับการชะลอคำสั่งโดยไม่ใช้sleepหรือไม่? ตัวอย่างเช่นการแสดงคำสั่งด้านล่างโดยไม่ใช้สลีปจริง: $ sleep 10 && echo "This is a test"

8
หลีกเลี่ยงการรอไม่ว่างในการทุบตีโดยไม่มีคำสั่ง sleep
ฉันรู้ว่าฉันสามารถรอเงื่อนไขที่จะกลายเป็นจริงในการทุบตีโดยทำ: while true; do test_condition && break sleep 1 done แต่จะสร้างกระบวนการย่อย 1 กระบวนการในการทำซ้ำแต่ละครั้ง (sleep) ฉันสามารถหลีกเลี่ยงพวกเขาโดยทำ: while true; do test_condition && break done แต่มันใช้ CPU เป็นจำนวนมาก (กำลังรอไม่ว่าง) เพื่อหลีกเลี่ยงกระบวนการย่อยและการรอคอยไม่ว่างฉันจึงตัดสินใจแก้ปัญหาดังกล่าว แต่ฉันพบว่ามันน่าเกลียด my_tmp_dir=$(mktemp -d --tmpdir=/tmp) # Create a unique tmp dir for the fifo. mkfifo $my_tmp_dir/fifo # Create an empty fifo for sleep by …

8
cron เทียบกับ sleep - อันไหนดีกว่าในแง่ของการใช้ cpu / memory อย่างมีประสิทธิภาพ?
กรณี: ฉันจำเป็นต้องเรียกใช้คำสั่ง / สคริปต์ในช่วงเวลาที่แน่นอนและสำหรับสิ่งนี้ฉันมีสองตัวเลือก: ตั้งค่าcron-job ใช้การวนซ้ำsleepในสคริปต์เอง คำถาม: ตัวเลือกใดที่ดีกว่าจากมุมมองการใช้ทรัพยากรทำไม เป็นcronวิธีที่ดีกว่า cron ใช้ทริกเกอร์บางอย่างหรืออะไรที่ทำให้มันมีประสิทธิภาพมากกว่าอีก cron? cron ใช้ขั้นตอนอะไรในการตรวจสอบและเริ่มงาน?

2
วิธีการเรียกใช้บริการผู้ใช้ systemd เพื่อทริกเกอร์ในโหมดสลีป (aka. suspend, hibernate)
จากแหล่งข้อมูลต่าง ๆ ที่ฉันได้เรียนด้วยกัน~/.config/systemd/user/screenlock.service: [Unit] Description=Lock X session Before=sleep.target [Service] Environment=DISPLAY=:0 ExecStart=/usr/bin/xautolock -locknow [Install] WantedBy=sleep.target systemctl --user enable screenlock.serviceผมได้เปิดใช้งานได้โดยใช้ แต่หลังจากรีบูตเครื่องเข้าสู่ระบบระงับและดำเนินการต่อ (ทดสอบทั้งกับsystemctl suspendและโดยการปิดฝา) หน้าจอจะไม่ถูกล็อคและไม่มีอะไรjournalctl --user-unit screenlock.serviceมา ผมทำอะไรผิดหรือเปล่า? กำลังDISPLAY=:0 /usr/bin/xautolock -locknowล็อคหน้าจอตามที่คาดไว้ $ systemctl --version systemd 215 +PAM -AUDIT -SELINUX -IMA -SYSVINIT +LIBCRYPTSETUP +GCRYPT +ACL +XZ +SECCOMP -APPARMOR $ awesome --version awesome v3.5.5 (Kansas …

6
ในบางเวลาจากนี้ทำบางสิ่งบางอย่าง (และอาจแสดงผลลัพธ์ในคอนโซล)
ฉันใช้เซิร์ฟเวอร์ Ubuntu 16.04 และฉันต้องการที่จะใช้ยูทิลิตี้atในเซสชันปัจจุบันของฉันเพื่อทำบางสิ่งบางอย่าง 1 นาทีนับจากนี้ (พูด, echo) โดยไม่ต้องระบุวันที่และเวลา - เพียง 1 นาทีล่วงหน้าจากเวลาปัจจุบัน สิ่งนี้ล้มเหลว: echo 'hi' | at 1m เหตุผลที่ฉันเลือกatมากกว่าsleepเพราะช่วงพักการนอนหลับเป็นช่วงปัจจุบันและเหมาะสำหรับการชะลอคำสั่งในเซสชันอื่นมากกว่าที่เราทำงานด้วยเวลาส่วนใหญ่ AFAIR atไม่ทำงานในลักษณะนี้และจะไม่ทำให้เสียเวลาของฉัน Update_1 โดยคำตอบของ Pied Piper ฉันได้ลอง: (sleep 1m; echo 'hi') & ฉันมีปัญหากับวิธีนี้: กระแสข้อมูล "สวัสดี" ถูกพิมพ์ภายในพรอมต์หลักของฉันและเพิ่มพรอมต์รองว่างเปล่า ( _) ทันทีภายใต้พรอมต์หลักที่มีให้ดู: USER@:~# (sleep 1m; echo 'hi') & [1] 22731 USER@:~# hi ^C …
12 console  stdout  at  sleep  delay 

4
วิธีการกำหนดระยะเวลาที่เหลือใน“ การนอนหลับ”?
ฉันมี: sleep 210m && for i in $(seq 1 5); do echo -e '\a'; sleep 0.5; done ทำงานเป็นตัวจับเวลาแบบเรียบง่ายไม่สะดุดเพื่อเตือนฉันเมื่อมีบางสิ่งที่ควรทำ นั่นsleep 210mคือ PID 25347 ฉันพยายามที่จะคิดออกว่าเวลาที่เหลืออยู่ในการนอนหลับ สิ่งที่ดีที่สุดที่ฉันจะได้รับด้วยการนอนในระยะเวลาเดิม (210 นาที) คือ: $ echo "210 60 * $(ps -o etimes= 25347) - 60 ~ r n [:] P p" | dc 78:11 (คำอธิบาย: บิตแรกคำนวณจำนวนวินาทีในโหมดสลีปดั้งเดิม $(ps…)บิตจะได้รับเวลานับตั้งแต่โหมดสลีปเริ่มต้นในไม่กี่วินาทีจากนั้นส่วนที่เหลือจะลบออกและแสดงในนาทีและวินาที) …
11 shell  sleep 

3
นอนจนกว่าจะถึงเวลาต่อไปตามเวลาที่กำหนด
ฉันต้องการชุดคำสั่งหรือคำสั่งเดียวที่หลับจนกว่าจะเกิดเหตุการณ์ต่อไปของเวลาเฉพาะเช่น "4:00" ฉันจะทำอย่างไร atคำสั่งหรือ cronjob ไม่ได้เป็นตัวเลือกเพราะผมไม่ต้องออกจากสคริปต์ที่ผมในปัจจุบัน กรณีเฉพาะที่ฉันกำลังพูดถึงคือสคริปต์ทำงานในหน้าจอ มันสำคัญมากที่ฉันจะไม่หยุดการทำงานของสคริปต์ด้วยตัวเองเพราะมีตัวแปรสำคัญหลายอย่างที่จำเป็นในบางจุดของสคริปต์ สคริปต์ไม่ควรถูกเรียกใช้งานในเรื่องปกติเสมอไป มันเพียงแค่ต้องดำเนินการในเวลาที่กำหนด มันจะเป็นประโยชน์อย่างมากหากสคริปต์จะต้องสร้างไฟล์ใด ๆ หรืองานอื่น ๆ เช่น cronjobs หรือหน้าจออื่น ๆ นี่เป็นเพียงคำถามของการออกแบบ ฉันเพิ่งมีความคิดที่น่ากลัว: difference=$(($(date -d "4:00" +%s) - $(date +%s))) if [ $difference -lt 0 ] then sleep $((86400 + difference)) else sleep $difference fi คุณมีความคิดที่ดีกว่านี้ไหม? ข้อมูลเพิ่มเติมจะถูกเพิ่มหากมีการร้องขอ!
11 bash  date  time  sleep 

3
ดำเนินการคำสั่งทุก ๆ X วินาที
ฉันต้องการที่จะดำเนินการคำสั่งนับ 10 วินาทีและมีมันดำเนินการในพื้นหลัง (จึงไม่watch?) คำตอบทั้งหมดแสดงบางอย่างเช่นต่อไปนี้ แต่จะดำเนินการ 11 ถึง 14 วินาที สิ่งนี้จะสำเร็จได้อย่างไร while true; do # perform command that takes between 1 and 4 seconds sleep 10 done

1
ปลุกจอมอนิเตอร์จากระยะไกล
ฉันมีเซิร์ฟเวอร์ Ubuntu ทำงานxdmกับopenboxที่เสียบจอภาพที่แสดงวิดีโอซึ่งจะเปิดตัวผ่านทางภูต cron เมื่อไม่ได้ใช้งานจอภาพเป็นระยะเวลาหนึ่งจะเข้าสู่โหมดพักเครื่องและฉันไม่สามารถปลุกด้วยกระบวนการวิดีโอ: จอภาพยังคงเป็นสีดำ ฉันจะปลุกจอภาพได้อย่างไร โดยไม่ต้องติดตั้งแพคเกจถ้าเป็นไปได้และไม่ต้องมีการเข้าถึงเครื่อง
10 openbox  sleep 

2
วิธีปิดระบบ แต่ยังคงมีอยู่ในเครือข่าย
ฉันกำลังมองหาการติดตั้งไฟล์เซิร์ฟเวอร์ในเครือข่ายของฉันเพื่อให้บริการข้อมูลและสำรองข้อมูล ฉันต้องการให้เครื่องนี้ใช้งานได้ตลอดเวลา แต่ฉันจะไม่เก็บมันไว้ตลอดเวลา (เพื่อเป็นการประหยัดพลังงาน) เป็นไปได้หรือไม่ที่จะตั้งค่าเพื่อให้สิ่งต่าง ๆ หยุดทำงานโดยอัตโนมัติ (หรือปิดเครื่อง) หลังจากเวลาผ่านไปแล้วเปิดเครื่องโดยอัตโนมัติอีกครั้งเมื่อฉันพยายามเชื่อมต่อกับมัน (ใช้การปลุกบางอย่างในเวทย์มนตร์ LAN โดยไม่ต้องส่ง WOL อย่างชัดเจน แพ็คเก็ต)?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.