Последовательные команды в crontab

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

На одном сервере я использую perl-сценарий, какие группы все команды и который выполняется один crontab.

запись crontab:

* * * * * root     /root/Permissions.sh /dev/null 2&1

Permissions.sh:

#!/usr/bin/perl
system ("chmod -R 755 /pathToMainFolder/softwareFolder");
system ("chown -R root:user /pathToMainFolder/softwareFolder");
system ("chmod -R 775 /pathToMainFolder/softwareFolder/subfolder");
system ("chown -R root:user /pathToMainFolder/softwareFolder/subfolder");
system ("chmod -R 775 /pathToMainFolder/softwareFolder/someFile");
system ("chown -R root:user /pathToMainFolder/softwareFolder/someFile");
system ("chmod 775 /pathToMainFolder/softwareFolder");

Это хорошо работает, но на другом сервере, программное обеспечение расположено в подпапке, имя которой включает пространство

/pathToMainFolder/sub Folder/softwareFolder

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

Ни один:

system ("chmod -R 755 /pathToMainFolder/sub Folder/softwareFolder");

ни:

system ("chmod -R 755 /pathToMainFolder/sub\ Folder/softwareFolder");

кажется, работает.

Я затем пытался просто скопировать 7 команд непосредственно в crontab:

* * * * * root chmod -R 755 /pathToMainFolder/sub\ Folder/softwareFolder
* * * * * root chown -R root:user /pathToMainFolder/sub\ Folder/softwareFolder
* * * * * root chmod -R 775 /pathToMainFolder/sub\ Folder/softwareFolder/subfolder
* * * * * root chown -R root:user /pathToMainFolder/sub\ Folder/softwareFolder/subfolder
* * * * * root chmod -R 775 /pathToMainFolder/sub\ Folder/softwareFolder/someFile
* * * * * root chown -R root:user /pathToMainFolder/sub\ Folder/softwareFolder/someFile
* * * * * root chmod 775 /pathToMainFolder/sub\ Folder/softwareFolder

Это помогло так или иначе как они, где теперь выполняется правильно, но crontab, кажется, не уважает последовательность команд.

Mar  1 10:19:01 local CRON[53069]: (root) CMD (chown -R root:user /pathToMainFolder/sub\ Folder/softwareFolder/subfolder)
Mar  1 10:19:01 local CRON[53070]: (root) CMD (chown -R root:user /pathToMainFolder/sub\ Folder/softwareFolder/someFile)
Mar  1 10:19:01 local CRON[53071]: (root) CMD (chmod -R 775 /pathToMainFolder/sub\ Folder/softwareFolder/subfolder)
Mar  1 10:19:01 local CRON[53073]: (root) CMD (chown -R root:user /pathToMainFolder/sub\ Folder/softwareFolder)
Mar  1 10:19:01 local CRON[53072]: (root) CMD (chmod -R 775 /pathToMainFolder/sub\ Folder/softwareFolder/someFile)
Mar  1 10:19:01 local CRON[53074]: (root) CMD (chmod -R 755 /pathToMainFolder/sub\ Folder/softwareFolder)
Mar  1 10:19:01 local CRON[53075]: (root) CMD (chmod 775 /pathToMainFolder/sub\ Folder/softwareFolder)

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

Я нашел https://stackoverflow.com/questions/9639434/running-two-commands-sequentially-in-a-cron-job и https://help.ubuntu.com/community/CronHowto, таким образом, я пытался использовать && выполниться chown и chmod команды последовательно, но так или иначе это не работает вообще.

* * * * * root chmod -R 755 /pathToMainFolder/sub\ Folder/softwareFolder && root chmod -R 775 /pathToMainFolder/sub\ Folder/softwareFolder/subfolder && root chmod -R 775 /pathToMainFolder/sub\ Folder/softwareFolder/someFile && root chmod 775 /pathToMainFolder/sub\ Folder/softwareFolder
* * * * * root chown -R root:user /pathToMainFolder/sub\ Folder/softwareFolder && root chown -R root:user /pathToMainFolder/sub\ Folder/softwareFolder/subfolder && root chown -R root:user /pathToMainFolder/sub\ Folder/softwareFolder/someFile

Я не получаю сообщение об ошибке, но выполнение ls -al из папок показал, что команды не выполняются правильно.

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

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

1
задан 23 May 2017 в 15:39

1 ответ

  • , почему жемчуг и не удар?
  • Используя удар и doublequotes.

    #/bin/bash
    chmod -R 755 "/pathToMainFolder/sub Folder/softwareFolder"
    chown -R root:user "/pathToMainFolder/sub Folder/softwareFolder"
    chmod -R 775 "/pathToMainFolder/sub Folder/softwareFolder/subfolder"
    chown -R root:user "/pathToMainFolder/sub Folder/softwareFolder/subfolder"
    chmod -R 775 "/pathToMainFolder/sub Folder/softwareFolder/someFile"
    chown -R root:user "/pathToMainFolder/sub Folder/softwareFolder/someFile"
    chmod 775 "/pathToMainFolder/sub Folder/softwareFolder"
    

    Сохраняют и выполняют этот сценарий от крона.

2
ответ дан 7 December 2019 в 13:48

Другие вопросы по тегам:

Похожие вопросы: