Вызов скрипта из скрипта оболочки - получение команды не найдено - PullRequest
0 голосов
/ 25 января 2012

Я новичок в сценариях оболочки. Я пытаюсь пройти через это.

> script to execute in cron (util.sh)
#!/bin/sh
HOST='ahostname'
PORT='3306'
USER='auser'
PASS='apassword'
DB='adatabase'
. /mnt/stor/backups/backup.sh

(я также попробовал источник /mnt/stor/backups/backup.sh)

 > script to execute (backup.sh)

Когда вызывается backup.sh (он вызывается), он, кажется, просто анализируется и не выполняется. Поэтому, что бы я ни вкладывал в это, я получаю сообщения вроде:

/mnt/stor/backups/backup.sh: line 8: date: command not found
/mnt/stor/backups/backup.sh: line 8: mysqldump: command not found
/mnt/stor/backups/backup.sh: line 8: tar: command not found
/mnt/stor/backups/backup.sh: line 8: rm: command not found

Идея состоит в том, чтобы получить файл, локализованный в домене, выполнить его с переменными и вызвать мастер-скрипт, который использует переменную для грязной работы. Из-за ограничений одного из моих хостов и нескольких доменов это лучший способ.

Ответы [ 2 ]

1 голос
/ 25 января 2012

При запуске из cron вы не можете полагаться на какие-либо переменные, которые обычно находятся в профиле вашей оболочки входа в систему (например, PATH, CLASSPATH и т. Д.). Вы должны явно указать, что вам нужно. В вашем случае, я предполагаю, что отсутствие переменной PATH вызывает ваши проблемы.

Полезно также указывать полные пути к программам, которые вы выполняете из автоматического сценария, просто для того, чтобы убедиться, что вы действительно собираетесь выполнить эту конкретную команду, т.е. не полагаться на путь.

Так что вместо

date

например, используйте

/bin/date

и т.д.

1 голос
/ 25 января 2012

Сценарий с проблемой кажется /mnt/stor/backups/backup.sh.Попробуйте настроить PATH для включения всех обычных каталогов с двоичными файлами, чтобы скрипт мог найти свои инструменты.Или, что еще лучше, измените /mnt/stor/backups/backup.sh и используйте абсолютные пути в таких командах, как /bin/rm вместо просто 'rm'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...