Я попытался использовать at
изнутри мой скрипт, и он печатает:
предупреждение: команды будут выполняться с использованием / bin / sh
Как бы я использовал другую оболочку, если бы хотел?
В Linux at
всегда предупреждает вас, что он будет выполнять указанные команды /bin/sh
, а не вашу любимую оболочку. Вы не можете подавить это сообщение, оно жестко запрограммировано в исходном коде.
Команда, которую вы передаете, интерпретируется /bin/sh
. Эта команда может быть путем к сценарию, если хотите; затем /bin/sh
запустит программу сценария, в результате чего интерпретатор сценария будет запущен и интерпретирует сценарий. Язык сценария полностью независим от программы, которая его запускает. Так, если, например, вы хотите выполнить скрипт bash (т. Е. Скрипт, который начинается с #!/bin/bash
), просто передайте путь к скрипту at
и проигнорируйте не относящееся к делу сообщение.
вы можете добиться его запуска из другой оболочки, изменив сценарий 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 - запускается каждые два часа, в полночь, в 2 часа ночи, в 4 часа ночи, в 6 часов утра, в 8 часов утра и т. Д.
0 * / 2 * * * /home/username/test.pl
#!/usr/bin/perl
в моем сценарии уже есть шебанг, но я получаю предупреждение#!/bin/sh
....?