innmind/

cron

在机器上安装crontab的辅助工具

3.2.0 2023-09-23 09:53 UTC

This package is auto-updated.

Last update: 2024-09-23 12:09:16 UTC


README

Build Status codecov Type Coverage

帮助管理机器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变量中。