【问题标题】:How could I edit the crontab jobs from PHP without damaging the file?如何在不损坏文件的情况下从 PHP 编辑 crontab 作业?
【发布时间】:2018-08-24 18:23:19
【问题描述】:

事实证明,我在 Raspberry 中有一个平台,想法是从那里您可以编辑 crontab 和 USB 内核的任务,我这样做是通过以下方式:

  • 我将 crontab 和来自 Web 的内核可视化。 Image of web page.
  • 通过一些按钮进行编辑,我转到另一个页面,其中包含 Crontab 或内核中的文本,在那里我使用刚刚编辑的内容创建了一个文本文件。 After press the edit button

我这样创建文件...

<?php
function Write() {
   $edit_file = $_POST["type_file"];
   $data = $_POST["tekst"];
   #file_put_contents($edit_file, $data);
   if ($_POST["number_file"] == "1") {
        $nombre_archivo = "crontab_backup";
        $file = fopen($nombre_archivo, "w");
        fwrite($file, $data);
        fclose($file);
        header('Refresh: 2; url=index.php');
        #echo $data;
   }elseif ($_POST["number_file"] == "2") {
        $nombre_archivo = "999_usbdevices.rules";
        $file = fopen($nombre_archivo, "w");
        fwrite($file, $data);
        fclose($file);
        header('Refresh: 2; url=index.php');
        #echo $data;
   }
   header('Refresh: 2; url=index.php');
}
?>
  • 在 Raspberry 中,我有一个代码可以验证此文件何时被编辑,并使用命令“sudo crontab -u pi / var / www / html / SIATA / crontab_backup”将其发送到 crontab。

这是代码:

backup1=$(sudo cp /etc/udev/rules.d/999_usbdevices.rules /tmp/999_usbdevices.txt)
backup2=$(crontab -u pi -l> /tmp/crontab_backup.txt)

shell=$(stat -c%y /var/www/html/SIATA/crontab_backup)
ult_mod=$(stat -c%y /var/www/html/SIATA/crontab_backup)

shellUSB=$(stat -c%y /var/www/html/SIATA/999_usbdevices.rules)
ult_modUSB=$(stat -c%y /var/www/html/SIATA/999_usbdevices.rules)

while [ true ]; do
    actual=$(stat -c%y /var/www/html/SIATA/crontab_backup)
    actualUSB=$(stat -c%y /var/www/html/SIATA/999_usbdevices.rules)

       if [ "$ult_mod" != "$actual" ]
           then
               ult_mod=$(stat -c%y /var/www/html/SIATA/crontab_backup)
               shell=$(sudo crontab -u pi /var/www/html/SIATA/crontab_backup)
               delete=$(sudo rm /tmp/crontab_backup.txt)
               shell2=$(crontab -u pi -l> /tmp/crontab_backup.txt)
               echo $shell
               echo $shell2
       fi

       if [ "$ult_modUSB" != "$actualUSB" ]
           then
               ult_modUSB=$(stat -c%y /var/www/html/SIATA/999_usbdevices.rules)
               shellUSB=$(sudo cp /var/www/html/SIATA/999_usbdevices.rules /etc/udev/rules.d/999_usbdevices.rules)
               delete=$(sudo rm /tmp/999_usbdevices.txt)
               shell2USB=$(sudo cp /etc/udev/rules.d/999_usbdevices.rules '/tmp/999_usbdevices.txt')
               echo $shellUSB
               echo $shell2USB
       fi
   backup1=$(sudo cp /etc/udev/rules.d/999_usbdevices.rules /tmp/999_usbdevices.txt)
   backup2=$(crontab -u pi -l> /tmp/crontab_backup.txt)
done

一切都做得很好,但是当他编辑 crontab 的那一刻,它变得无法使用,它不再执行里面的任务......

有人可以帮帮我吗?

问候。

【问题讨论】:

  • 请包含您的代码,而不仅仅是您的代码图片。

标签: bash apache cron raspberry-pi


【解决方案1】:

我已经解决了这个问题,需要在将文件导入 crontab 之前对其进行格式化,这是我用 dos2unix 完成的,它立即起作用了。

sudo apt-get install tofrodos
sudo ln -s /usr/bin/fromdos /usr/bin/dos2unix
dos2unix /var/www/html/crontab_backup

我希望它为某人服务。问候。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    • 2014-07-24
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    • 2014-12-11
    相关资源
    最近更新 更多