Score:0

ในขณะที่สคริปต์จริงไม่ทำงานขณะบู๊ต

ธง ni

ฉันมีสคริปต์ที่ใช้กับ UPS Hat สำหรับ Raspberry Pi 4b ฉันใช้เซิร์ฟเวอร์ Ubuntu 21.04 64 บิต เมื่อฉันเรียกใช้สคริปต์ด้วยตนเองจาก /home/user/ups.sh มันใช้งานได้ดี อย่างไรก็ตาม หลังจากทำตามคำแนะนำและสร้างไฟล์ rc.local แล้ว ฉันไม่สามารถทำให้สคริปต์เริ่มทำงานโดยอัตโนมัติเมื่อบู๊ตได้ ฉันได้วางสคริปต์ลงในไดเร็กทอรี /user/bin/ และทำ chmod +x กับมัน

#!/bin/bash

#GPIO17 (อินพุต) ใช้เพื่ออ่านสถานะพลังงานปัจจุบัน 
#0 - ปกติ (หรือเปิดพลังงานแบตเตอรี่ด้วยตนเอง) 
#1 - ไฟดับ เปลี่ยนเป็นแบตเตอรี่ 
เสียงสะท้อน 17 > /sys/class/gpio/export;
สะท้อนใน > /sys/class/gpio/gpio17/direction;

#GPIO27 (อินพุต) ใช้เพื่อระบุว่า UPS ออนไลน์อยู่
เสียงสะท้อน 27 > /sys/class/gpio/export;
สะท้อนใน > /sys/class/gpio/gpio27/direction;

#GPIO18 เคยแจ้ง UPS ว่า Pi ยังทำงานอยู่ หลังจากปิดพินนี้จะกลับสู่สถานะ Hi-Z 
เสียงสะท้อน 18 > /sys/class/gpio/export;
echo out > /sys/class/gpio/gpio18/direction;
เสียงสะท้อน 0 > /sys/class/gpio/gpio18/value;

power_timer=0;
inval_power="0";

ups_online1="0";
ups_online2="0";
ups_online_timer="0";

ในขณะที่จริง
ทำ
    # อ่านค่าพิน GPIO27
    #โดยปกติแล้ว UPS จะสลับพินนี้ทุกๆ 0.5 วินาที
    ups_online1=$(แมว /sys/class/gpio/gpio27/value);
    
    นอน 0.1;
    
    ups_online2=$(แมว /sys/class/gpio/gpio27/value);
    
    ups_online_timer=$((ups_online_timer+1));
    
    #สลับกัน?
    ถ้า (( "$ups_online1" != "$ups_online2" )); แล้ว
        ups_online_timer=0;
    ไฟ
    
    #รีเซ็ตตัวจับเวลาทั้งหมดหากอัพออฟไลน์นานกว่า 3 วินาที (ตรวจไม่พบการสลับ)
    ถ้า (("$ups_online_timer" > 30)); 
    แล้ว
        echo "$ups_online_timer";
        
        ups_online_timer=30;
        power_timer=0;
        inval_power=0;
        #echo "UPS ออฟไลน์ ออก";
        #ออก;
    ไฟ      

    # อ่านค่าพิน GPIO17
    inval_power=$(แมว /sys/class/gpio/gpio17/value);
    
#เสียงสะท้อน $inval_power;
    
    ถ้า (( "$inval_power" == 1 )); แล้ว
        power_timer=$((power_timer+1));
    อื่น 
        power_timer=0;
    ไฟ
    
    #หากไฟฟ้าไม่ฟื้นคืนภายใน 60 วินาที
    ถ้า (( "$power_timer" == 600 )); แล้ว 
        #เสียงสะท้อน $power_timer;
        echo "กำลังปิด..."
        นอน 2;
        ปิด systemctl; #ปิด
        ทางออก;
    ไฟ  
เสร็จแล้ว

นี่คือสิ่งที่ฉันมีในไฟล์ rc.local

#!/bin/sh -e
#
#rc.local
#

ทุบตี /usr/bin/ups.sh &

ทางออก 0

ฉันค้นหา google มาหลายวันแล้วและลองใช้ไฟล์ cron และ systemd แล้วและดูเหมือนจะไม่มีอะไรทำงาน หวังว่าจะมีผู้ใจดีที่นั่นให้คำตอบ ขอขอบคุณ.

CyberHare avatar
ni flag
ดูเหมือนว่าบริการ rc.local ไม่ได้เปิดใช้งานในอูบุนตู ต้องเปิดใช้งานด้วย systemd

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา