wget은 시작 시 파일을 일반 텍스트 파일로 저장합니다.

wget은 시작 시 파일을 일반 텍스트 파일로 저장합니다.

crontab에서 @reboot를 실행하는 bash 스크립트가 있습니다.

스크립트 자체에는 인터넷에서 파일을 추출하고 다운로드하기 위한 wget 명령이 포함되어 있습니다.

로그인하고 터미널을 연 후 스크립트를 실행하면 제대로 작동하고 파일(html, png)이 올바르게 저장됩니다. 하지만 시스템을 다시 시작하면 실행이 저장되고 내용이 없는 일반 텍스트 파일로 저장됩니다.


해결됨

--> crontab의 절전 기능을 사용했는데 작동했습니다!

Linux 및 코딩이 처음이신 분들의 모든 피드백에 진심으로 감사드립니다! /etc/network/if-up.d/ 옵션도 살펴보겠습니다.

답변1

문제는거의물론, @reboot크론 작업은 네트워크 인터페이스가 나타나기 전에 시작됩니다 up.일반적으로 이것은 잘 문서화된 단점입니다 cron.이는 해당 시설이 쓸모없다는 의미가 아니라 @reboot단지 귀하의 경우처럼 해당 시설의 작동 방식과 실패 시 수정 방법을 이해해야 한다는 의미입니다(아마도:).

이를 수행하는 방법에는 최소한 두 가지가 있습니다.

  1. sleep네트워크에 획득할 시간을 더 제공하기 위해 @reboot 작업에 사용됩니다 up. crontab항목은 다음과 같습니다.

@restartsleep10;/your/bash/scripts/now

여기서 제가 추천하는 값은 10인터페이스에 10초를 주는 것입니다 up. YMMV, 그러니 다른 값을 시도해 보세요.

  1. @confetti의 제안에 따라(그리고 @Celada에게 감사드립니다) 스크립트를 /etc/network/if-up.d. 시스템이 처음 부팅될 때만 실행됩니다(즉, @reboot네트워크 인터페이스가 부팅될 때마다 실행되는 것은 아님 up).

#!/bin/sh

NWKSTATUS=/var/run/the-network-is-up

# /var/run은 임시 파일 시스템이므로 시스템을 종료하면
# 플래그 파일 "the-network-is-up"이 효과적으로 삭제됩니다.

case "$IFACE" in
lo) # 루프백 인터페이스를 제외합니다. # 실제 인터페이스가 아니기 때문에
고려하지 않습니다 . 실제 네트워크 인터페이스가 존재할 때만 이 플래그를 설정합니다.
#exit 0 * ) ;;




# 플래그 파일이 존재하면 작업은 완료된 것입니다
. # 그렇지 않으면 생성합니다.

if [ -e $NWKSTATUS ]; 0을 종료하고
else
touch $NWKSTATUS
fi

#여기에 스크립트를 추가하세요...

따라서 위의 모든 내용을 파일에 넣은 다음(예 setnwkstatus.sh:) 폴더에 저장하고 /etc/network/if-up.d/실행 가능하게 만드세요(예 sudo chmod /etc/network/if-up.d/setnwkstatus.sh:)

답변2

cron가장 가능성이 높은 문제는 스크립트를 실행하려고 할 때 네트워크 인터페이스가 작동하지 않는다는 것입니다.

네트워크 인터페이스가 시작된 후에 스크립트를 실행할 수 있습니다.

스크립트를 넣고 실행할 수 있도록 /etc/network/if-up.d설정합니다 . chmod +x네트워크 인터페이스가 나타날 때마다 그 안의 모든 스크립트가 실행됩니다.

관련 정보