亚历克斯回答这里是我的步骤:
创建shell代码
root@ip[/]# touch mylog.sh
root@ip[/]# nano mylog.sh
Run Code Online (Sandbox Code Playgroud)
复制mylog.sh中的代码
#!/bin/bash
echo "File $1 created." >> /mylog.log
Run Code Online (Sandbox Code Playgroud)
允许
root@ip[/]# chmod +x mylog.sh
Run Code Online (Sandbox Code Playgroud)
创建日志文件
root@ip[/]# touch mylog.log
Run Code Online (Sandbox Code Playgroud)
打开icron表
incrontab -e
Run Code Online (Sandbox Code Playgroud)
把新命令放入
/test/ IN_CREATE mylog.sh $@$#
Run Code Online (Sandbox Code Playgroud)
重新加载incron - 创建一个新文件 - 检查日志文件
root@ip[/]# incrontab --reload
requesting table reload for user 'root'...
request done
root@ip[/]# cd test
root@ip[/test]# touch newfile.txt
root@ip[/test]# cd /
root@ip[/]# nano mylog.log
Run Code Online (Sandbox Code Playgroud)
但仍然是空的日志文件...我错过了什么?
最后用完整路径调用shell脚本就可以了:
/test/ IN_CREATE /mylog.sh $@$#
Run Code Online (Sandbox Code Playgroud) 我有一个PHP脚本,使用cURL在Sharepoint上上传文档.如果我在终端中运行scipt,则上传过程正常.
因为我想在更改此文件时自动调用脚本,我使用incron来检测相应文件夹中的更改并触发PHP脚本的调用.
我的incron文件如下所示:
/var/www/[further path]/temp IN_MODIFY,IN_CREATE /usr/bin/php /var/www/[further path]/uploadToSharepoint.php
Run Code Online (Sandbox Code Playgroud)
当我查看syslog时,我可以看到incron正确触发了脚本调用.但由于某些原因,该文件未上载到Sharepoint.我还尝试使用全局写权限创建文件,但这并没有解决我的问题.
-rwxrwxrwx 1 www-data www-data 49058 Mär 3 10:28 [file].xlsx
Run Code Online (Sandbox Code Playgroud)
这是我正在调用的脚本:
包括'database.php';
$username="[username]";
$password="[password]";
$localFileURL="/var/www/[further path]/temp/";
$files = scandir($localFileURL, 1);
$newest_file = $files[0];
$pathToUpload=getTeamPath($newest_file);
uploadDocument($pathToUpload . '/' . $newest_file, $localFileURL . $newest_file,$username, $password);
function uploadDocument($dest, $localFile,$username, $password){
$fp = fopen($localFile, 'r');
// Connecting to website.
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERPWD, $username . ':' . $password);
curl_setopt($ch, CURLOPT_URL, $dest);
curl_setopt($ch, CURLOPT_UPLOAD, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 86400); // 1 Day Timeout
curl_setopt($ch, …Run Code Online (Sandbox Code Playgroud) 我正在使用 incron 来监视目录中的一个文件/var/www/html。的输出incrontab -l
/var/www/html/test IN_ACCESS /home/intel/test.sh
Run Code Online (Sandbox Code Playgroud)
该作业应该在主目录中创建一个文件,但是当执行该作业时(我在浏览器中打开了网址),没有创建文件,以下行是/var/log/cron文件中显示的内容
Jan 20 10:27:57 localhost incrond[26442]: (root) CMD (/home/intel/test.sh)
Run Code Online (Sandbox Code Playgroud)
这清楚地表明事件已经发生。
PS:如果我只是在 CLI 中运行,/home/intel/test.sh它可以正常工作并创建测试文件,以下是我的test.sh文件。
#!/bin/bash
touch fm00
Run Code Online (Sandbox Code Playgroud) incron ×3
centos ×1
cron ×1
curl ×1
fedora20 ×1
filesystems ×1
linux ×1
php ×1
sharepoint ×1
ubuntu ×1