Tested FREEBSD version was 11.2 Stable, after I config all environment , I post some script from other linux.
And it not work, how ever I modify codes, It’s not work correctly.
Finally I find a article discuss this issue. It’s system bug, and has been fixed in FreeBSD 12.X.
An additional technique to help with debugging and running cron jobs: Take whatever program you run, and wrap it in a shell script. Design the script such that in the normal case (success), it creates absolutely no output on either stdout or stderr. Like that you get no e-mail if everything is working. What to do when something goes wrong? There are two schools of thought: (1) Let the command run normally, and cron will mail the potentially complex output to the user. (2) Catch all the output in the script, and store it in a well-known location like /var/log. Then in case of failure, output just one line: “foobar failed, please see /var/log/foobar_20181214.error.log for details”.
In this particular case: certbot is a python script, which probably relies on certain environment settings to find its libraries and configuration. Cron deliberately strips the environment for safety reasons. This could easily cause certbot to fail, perhaps silently if the e-mail output from cron is broken.
And I move these script to FreeBSD 12.1, and it’s working without any modify.