ฉันพยายามที่จะใช้at
จากภายในสคริปต์ของฉันและมันพิมพ์:
คำเตือน: คำสั่งจะถูกดำเนินการโดยใช้ / bin / sh
ฉันจะใช้เปลือกที่แตกต่างกันได้อย่างไรถ้าฉันต้องการ?
ฉันพยายามที่จะใช้at
จากภายในสคริปต์ของฉันและมันพิมพ์:
คำเตือน: คำสั่งจะถูกดำเนินการโดยใช้ / bin / sh
ฉันจะใช้เปลือกที่แตกต่างกันได้อย่างไรถ้าฉันต้องการ?
คำตอบ:
ภายใต้ Linux at
เตือนคุณเสมอว่าจะดำเนินการคำสั่งที่ระบุด้วย/bin/sh
แทนที่จะเป็นเชลล์ที่คุณโปรดปราน คุณไม่สามารถระงับข้อความนี้มันเป็นรหัสยากในรหัสที่มา
/bin/sh
คำสั่งที่คุณผ่านการตีความ คำสั่งนี้สามารถเป็นพา ธ ไปยังสคริปต์ได้หากคุณต้องการ จากนั้น/bin/sh
จะดำเนินการโปรแกรมสคริปต์ทำให้ตัวแปลสคริปต์เปิดใช้งานและตีความสคริปต์ ภาษาของสคริปต์นั้นไม่ขึ้นอยู่กับโปรแกรมที่เริ่มทำงาน ดังนั้นถ้าเช่นคุณต้องการรันสคริปต์ทุบตี (เช่นสคริปต์ที่ขึ้นต้นด้วย#!/bin/bash
) เพียงแค่ผ่านเส้นทางไปยังสคริปต์ไปยังat
และละเว้นข้อความที่ไม่เกี่ยวข้อง
คุณสามารถบรรลุการทำงานได้จากเปลือกแตกต่างกันเปลี่ยนสคริปต์shebang บางเส้น Shebang ทั่วไป:
#!/bin/sh — Execute the file using sh, the Bourne shell, or a compatible shell #!/bin/csh -f — Execute the file using csh, the C shell, #!/usr/bin/perl -T — Execute using Perl with the option for taint checks #!/usr/bin/php — Execute the file using the PHP command line interpreter #!/usr/bin/python -O — Execute using Python with optimizations to code #!/usr/bin/ruby — Execute using Ruby
หากต้องการเรียกใช้สคริปต์ตามเวลาที่กำหนดฉันขอแนะนำให้คุณเพิ่มcronjob
ตัวอย่าง:
บรรทัดต่อไปนี้ทำให้โปรแกรมผู้ใช้ test.pl ซึ่งเป็นสคริปต์ Perl ทำงานทุกสองชั่วโมงในเวลาเที่ยงคืน, 2am, 4am, 6am, 8am และอื่น ๆ :
0 * / 2 * * * /home/username/test.pl
#!/bin/sh
....
#!/usr/bin/perl
เป็น Shebang ในสคริปต์ของฉันอยู่แล้ว แต่ฉันได้รับคำเตือน