mirror of
https://github.com/kuhyx/scripts.git
synced 2026-07-04 16:43:13 +02:00
fix: midnight shutdown does not shutdown pc on boot letss go
This commit is contained in:
parent
889d38f797
commit
805b5ccdbe
@ -182,7 +182,7 @@ Before=shutdown.target reboot.target halt.target
|
|||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=oneshot
|
Type=oneshot
|
||||||
ExecStart=/usr/bin/systemctl poweroff
|
ExecStart=/usr/local/bin/midnight-shutdown-check.sh
|
||||||
TimeoutStartSec=0
|
TimeoutStartSec=0
|
||||||
StandardOutput=journal
|
StandardOutput=journal
|
||||||
StandardError=journal
|
StandardError=journal
|
||||||
@ -208,6 +208,8 @@ Requires=midnight-shutdown.service
|
|||||||
OnCalendar=*-*-* 00:00:00
|
OnCalendar=*-*-* 00:00:00
|
||||||
Persistent=false
|
Persistent=false
|
||||||
AccuracySec=1s
|
AccuracySec=1s
|
||||||
|
WakeSystem=false
|
||||||
|
RandomizedDelaySec=0
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=timers.target
|
WantedBy=timers.target
|
||||||
@ -282,10 +284,46 @@ EOF
|
|||||||
echo "✓ Created management script: $script_file"
|
echo "✓ Created management script: $script_file"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Function to create smart shutdown check script
|
||||||
|
create_shutdown_check_script() {
|
||||||
|
echo ""
|
||||||
|
echo "4. Creating Smart Shutdown Check Script..."
|
||||||
|
echo "========================================"
|
||||||
|
|
||||||
|
local check_script="/usr/local/bin/midnight-shutdown-check.sh"
|
||||||
|
|
||||||
|
cat > "$check_script" << 'EOF'
|
||||||
|
#!/bin/bash
|
||||||
|
# Smart midnight shutdown check script
|
||||||
|
# Only shuts down if the current time is actually close to midnight
|
||||||
|
# Prevents shutdown on boot if system was off during scheduled time
|
||||||
|
|
||||||
|
# Get current time components
|
||||||
|
current_hour=$(date +%H)
|
||||||
|
current_minute=$(date +%M)
|
||||||
|
current_time_minutes=$((10#$current_hour * 60 + 10#$current_minute))
|
||||||
|
|
||||||
|
# Midnight is 0 minutes (00:00)
|
||||||
|
# Allow shutdown if we're within 5 minutes of midnight
|
||||||
|
# This covers 23:55-00:05 range
|
||||||
|
if [[ $current_time_minutes -le 5 ]] || [[ $current_time_minutes -ge 1435 ]]; then
|
||||||
|
echo "$(date): Executing midnight shutdown - current time is within shutdown window"
|
||||||
|
logger -t midnight-shutdown "Executing scheduled shutdown at $(date)"
|
||||||
|
/usr/bin/systemctl poweroff
|
||||||
|
else
|
||||||
|
echo "$(date): Skipping shutdown - not within midnight window (current: $current_hour:$current_minute)"
|
||||||
|
logger -t midnight-shutdown "Skipped shutdown - not within midnight window (current: $current_hour:$current_minute)"
|
||||||
|
fi
|
||||||
|
EOF
|
||||||
|
|
||||||
|
chmod +x "$check_script"
|
||||||
|
echo "✓ Created smart shutdown check script: $check_script"
|
||||||
|
}
|
||||||
|
|
||||||
# Function to enable the timer
|
# Function to enable the timer
|
||||||
enable_timer() {
|
enable_timer() {
|
||||||
echo ""
|
echo ""
|
||||||
echo "4. Enabling Shutdown Timer..."
|
echo "5. Enabling Shutdown Timer..."
|
||||||
echo "============================"
|
echo "============================"
|
||||||
|
|
||||||
# Reload systemd daemon
|
# Reload systemd daemon
|
||||||
@ -304,7 +342,7 @@ enable_timer() {
|
|||||||
# Function to test the setup
|
# Function to test the setup
|
||||||
test_setup() {
|
test_setup() {
|
||||||
echo ""
|
echo ""
|
||||||
echo "5. Testing Setup..."
|
echo "6. Testing Setup..."
|
||||||
echo "=================="
|
echo "=================="
|
||||||
|
|
||||||
echo "Service files:"
|
echo "Service files:"
|
||||||
@ -433,6 +471,7 @@ enable_midnight_shutdown() {
|
|||||||
create_shutdown_service
|
create_shutdown_service
|
||||||
create_shutdown_timer
|
create_shutdown_timer
|
||||||
create_management_script
|
create_management_script
|
||||||
|
create_shutdown_check_script
|
||||||
|
|
||||||
# Enable and start timer
|
# Enable and start timer
|
||||||
enable_timer
|
enable_timer
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user