innmind / cron
在机器上安装crontab的辅助工具
3.2.0
2023-09-23 09:53 UTC
Requires
- php: ~8.2
- innmind/immutable: ~4.2|~5.0
- innmind/server-control: ~4.1|~5.0
Requires (Dev)
- innmind/black-box: ~5.5
- innmind/coding-standard: ~2.0
- phpunit/phpunit: ~10.2
- vimeo/psalm: ~5.12
Suggests
- innmind/operating-system: To easily access to a machine control mechanism
This package is auto-updated.
Last update: 2024-09-23 12:09:16 UTC
README
帮助管理机器crontab的库
重要:为了正确使用此库,您必须使用vimeo/psalm
验证您的代码
安装
composer require innmind/cron
用法
安装任务
对于默认用户
use Innmind\Cron\{ Crontab, Job, }; use Innmind\OperatingSystem\Factory; $os = Factory::build(); $install = Crontab::forConnectedUser( Job::of('* * * * * say hello'), Job::of('*/2 * * * * say world'), ); $install($os->control()); // this is the same as running "echo '* * * * * say hello' | crontab" in your terminal
对于特定用户
use Innmind\Cron\{ Crontab, Job, }; use Innmind\OperatingSystem\Factory; use Innmind\Server\Control\ScriptFailed; use Innmind\Immutable\{ Either, SideEffect, }; $os = Factory::build(); $install = Crontab::forUser( 'watev', Job::of('* * * * * say hello'), ); $install($os->control()); // Either<ScriptFailed, SideEffect> // this is the same as running "echo '* * * * * say hello' | crontab -u admin" in your terminal
由于此库依赖于innmind/server-control
,您可以在远程服务器上轻松安装crontab。例如,在服务器example.com
上为用户admin
安装crontab的操作如下
use Innmind\Cron\{ Crontab, Job, }; use Innmind\OperatingSystem\Factory; use Innmind\Url\Url; $os = Factory::build(); $install = Crontab::forUser( 'admin', Job::of('* * * * * say hello'), ); $install( $os->remote()->ssh(Url::of('ssh://example.com')), );
注意:目前该库不支持在crontab中添加注释和空格。
读取crontab
对于默认用户
use Innmind\Cron\{ Read, Job, }; use Innmind\OperatingSystem\Factory; use Innmind\Immutable\{ Maybe, Sequence, }; $os = Factory::build(); $read = Read::forConnectedUser(); $jobs = $read($os->control()); // it will run "crontab -l" // $jobs is an instance of Maybe<Sequence<Job>>
对于特定用户
use Innmind\Cron\{ Read, Job, }; use Innmind\OperatingSystem\Factory; use Innmind\Immutable\{ Maybe, Sequence, }; $os = Factory::build(); $read = Read::forUser('watev'); $jobs = $read($os->control()); // it will run "crontab -u watev -l" // $jobs is an instance of Maybe<Sequence<Job>>
注意:目前注释和空格不列在$jobs
变量中。