Re: [問題] 怎麼離開 at 工作排程

看板Linux作者 (LoRdOfCrEaTuRe)時間9年前 (2016/07/24 16:32), 9年前編輯推噓5(5011)
留言16則, 2人參與, 最新討論串3/3 (看更多)
※ 引述《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' abby8050@gmail.com"; $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://www.ptt.cc/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

07/24 19:12, , 1F
內建php不早就有mail函數,這樣多此一舉
07/24 19:12, 1F

07/24 19:18, , 2F
誤會意思。你 io 重導例子內確認 test.txt 在正確目錄
07/24 19:18, 2F

07/24 19:18, , 3F
內嗎
07/24 19:18, 3F

07/24 19:18, , 4F
另外不是提供 popen 範例有測試過嗎
07/24 19:18, 4F

07/24 19:24, , 5F
另外你應該有裝命令列版本的php, php xxx.php 可以執行
07/24 19:24, 5F

07/24 19:24, , 6F
07/24 19:24, 6F

07/24 19:41, , 7F
php cli 試了date > test.txt 不含at就可以 含at就不行
07/24 19:41, 7F

07/24 20:01, , 8F
IO重導例子 test.txt寫成絕對路徑 php cli可以執行 但是
07/24 20:01, 8F

07/24 20:02, , 9F
在網頁上點這個連結就不行
07/24 20:02, 9F

07/24 20:30, , 10F
確認檔案權限與selinux設定
07/24 20:30, 10F
※ 編輯: abby8050 (111.251.105.132), 07/24/2016 20:38:29

07/24 20:46, , 11F
檔案權限send_mail.php和test.txt都是777了 然後不知道
07/24 20:46, 11F

07/24 20:47, , 12F
要搞懂selinux的哪一部分呢? (第一次聽到這個)
07/24 20:47, 12F

07/24 20:57, , 13F
setenforce 0 暫時關閉後測試
07/24 20:57, 13F

07/24 20:58, , 14F
先問你用哪個linux系統,rh based 才有selinux
07/24 20:58, 14F

07/24 21:04, , 15F
ubuntu
07/24 21:04, 15F

07/24 22:17, , 16F
我知道問題在哪裡了>< 要去/etc/at.deny把 www-data刪掉
07/24 22:17, 16F
※ 編輯: abby8050 (111.251.105.132), 07/24/2016 22:26:06
文章代碼(AID): #1Nb7q3sT (Linux)
文章代碼(AID): #1Nb7q3sT (Linux)