作者abby8050 (LoRdOfCrEaTuRe)
看板Linux
标题Re: [问题] 怎麽离开 at 工作排程
时间Sun Jul 24 16:31:58 2016
※ 引述《kenduest (小州)》之铭言::
: 若你写 php 是希望达成执行 at 然後可以把资料喂给他,也就是直接程式与 at 互动的话
: 一般会用 popen 方式. 可以查一下 php 本身官方下面的 popen 例子很多程式码参考
: http://php.net/manual/en/function.popen.php
: 比方:
: <?php
: $command= <<<EOF
: ls -l / > /tmp/ls-result.txt
: date > /tmp/date-result.txt
: EOF;
: $handle = popen("at 22:00","w");
: fwrite($handle,$command);
: fclose($handle);
: ?>
: 最後题外话 shell_exec("cd /"); 这样一行叙述实际上执行之後,你後续的程式执行工作
: 目录都还不会在 / 那边,因为他是 spawn 一个 shell 去执行,执行之後结束该 shell
: 就消失了。除非你刚好一行内有 cd 到其他目录然後又执行其他命令叙述搭配一起用。
其实是想在client指定的时间才寄出信。
以下方式都可以收到信,问题已解决。
1. 采用popen:
<?php
$command = "mail -s 'title'
[email protected]";
$handle = popen("at 16:21 07242016", "w");
fwrite($handle, $command);
fclose($handle);
?>
2. 采用文字档:
<?php
shell_exec("at 18:05 07242016 < /var/html/www/test.txt");
?>
附注: 假若其他朋友在试上面的code,发现在php cli执行可以收到信,
在网站上却不能收到信,那有可能是web app被设在at拒绝名单了。
可以到/etc/at.deny 把代表你的web app的使用者删掉。
例如: server是装LAMP的话,使用者就是www-data
再次感谢k大>///<
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.251.105.132
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Linux/M.1469349123.A.D9D.html
※ 编辑: abby8050 (111.251.105.132), 07/24/2016 17:11:22
※ 编辑: abby8050 (111.251.105.132), 07/24/2016 17:34:57
※ 编辑: abby8050 (111.251.105.132), 07/24/2016 17:37:41
※ 编辑: abby8050 (111.251.105.132), 07/24/2016 17:50:55
※ 编辑: abby8050 (111.251.105.132), 07/24/2016 18:14:29
※ 编辑: abby8050 (111.251.105.132), 07/24/2016 18:18:17
※ 编辑: abby8050 (111.251.105.132), 07/24/2016 18:32:32
※ 编辑: abby8050 (111.251.105.132), 07/24/2016 18:34:50
※ 编辑: abby8050 (111.251.105.132), 07/24/2016 19:10:32
1F:推 kenduest: 内建php不早就有mail函数,这样多此一举 07/24 19:12
2F:推 kenduest: 误会意思。你 io 重导例子内确认 test.txt 在正确目录 07/24 19:18
3F:→ kenduest: 内吗 07/24 19:18
4F:→ kenduest: 另外不是提供 popen 范例有测试过吗 07/24 19:18
5F:推 kenduest: 另外你应该有装命令列版本的php, php xxx.php 可以执行 07/24 19:24
6F:→ kenduest: 吗 07/24 19:24
7F:→ abby8050: php cli 试了date > test.txt 不含at就可以 含at就不行 07/24 19:41
8F:→ abby8050: IO重导例子 test.txt写成绝对路径 php cli可以执行 但是 07/24 20:01
9F:→ abby8050: 在网页上点这个连结就不行 07/24 20:02
10F:推 kenduest: 确认档案权限与selinux设定 07/24 20:30
※ 编辑: abby8050 (111.251.105.132), 07/24/2016 20:38:29
11F:→ abby8050: 档案权限send_mail.php和test.txt都是777了 然後不知道 07/24 20:46
12F:→ abby8050: 要搞懂selinux的哪一部分呢? (第一次听到这个) 07/24 20:47
13F:推 kenduest: setenforce 0 暂时关闭後测试 07/24 20:57
14F:→ kenduest: 先问你用哪个linux系统,rh based 才有selinux 07/24 20:58
15F:→ abby8050: ubuntu 07/24 21:04
16F:→ abby8050: 我知道问题在哪里了>< 要去/etc/at.deny把 www-data删掉 07/24 22:17
※ 编辑: abby8050 (111.251.105.132), 07/24/2016 22:26:06