Windows 배치 파일을 쉘 스크립트로 변환해야 합니다. Linux에서 cron을 사용하여 .exe 파일을 실행하는 방법은 무엇입니까? [폐쇄]

Windows 배치 파일을 쉘 스크립트로 변환해야 합니다. Linux에서 cron을 사용하여 .exe 파일을 실행하는 방법은 무엇입니까? [폐쇄]

Windows 배치 파일을 bash 쉘 스크립트로 변환하려고 합니다. 하지만 다음 명령을 변환하는 방법을 이해할 수 없습니다. 저는 와인을 사용하여 Linux에서 .exe 파일을 실행했습니다. Linux에서 .exe 파일을 실행하는 다른 방법이 있습니까?

쉘 스크립트에서 변환하려는 배치 코드는 다음과 같습니다.

echo Deleting any task..
call schtasks.exe /delete /TN "Task_name" /F

echo Creating new task..
call schtasks.exe /create /RU %computerName% \%UserName% /RP %Password% /TN 
"Task_name" /XML  "DATA/Task_name.xml"

답변1

OP가 원하는 것은 쉘 스크립트에서 Linux에 예약된 작업을 생성하는 것이라고 생각합니다.

정확한 작업이 무엇이고 그 이유는 게시된 내용에서 전혀 명확하지 않지만 일반적으로 이는 쉘 스크립트에서 "crontab"을 자동화하여 달성할 수 있습니다.

이 작업을 수행하려면 상대적으로 고급 쉘 스크립팅 기술이 필요하므로 쉘 스크립팅을 처음 접하는 사람들에게는 권장되지 않을 수 있습니다.

이를 수행하는 방법의 예는 다음과 같습니다.

#!/bin/bash
# Create empty temporary file with safe name
TEMPFILE=$(mktemp)

# Put current crontab for user into the temporary file
crontab -l > $TEMPFILE

# Append new command to end of the created file using a shell 'here document'
cat << EOF >> $TEMPFILE
0 0 * * * /bin/df > /tmp/df-date-$(date +%d%b%Y)
EOF

# Load the new extended file in as the crontab for the user
crontab $TEMPFILE

이것은 단지 예일 뿐이므로 직접 복사해서는 안 됩니다. 시연되는 각 개념을 연구하고 이해하는 데 사용하세요.

사용자에게 crontab 파일이 아직 없으면 문제가 발생할 수 있습니다. man 5 crontab내 시스템의 매뉴얼 페이지 에 따르면 또 다른 문제는 일부 Linux 버전이 crontab -l헤더 라인을 추가한다는 것입니다. 즉 crontab -l | crontab -, 동일한 데이터를 내보내고 다시 가져오려고 하면 추가 헤더 라인이 계속 추가된다는 의미입니다.

경쟁 조건도 있습니다. 사용자의 crontab은 crontab -lcrontab을 다시 가져오기 위해 해당 줄과 줄 끝 사이의 다른 프로세스에 의해 편집될 수 있습니다. 하지만 저는 이 프로세스와 유사한 것이 실제 환경에서 성공적으로 사용되는 것을 보았습니다.

0 0 * * * /bin/df > /tmp/df-date-$(date +%d%b%Y)이 줄의 의미에 대해서는 설명서를 참조하세요 . 내 예의 효과는 시스템 명령의 출력을 포함하는 파일을 매일 생성하는 것입니다.croncrontab/tmpdf

관련 정보