LogNotes

2025-06-29 06:15:29
руководство по использованию команды `at` в Linux с датами в ISO-формате

### 1. Установка `at`

Если команда `at` не установлена, установите её:

```bash
# Для Debian/Ubuntu
sudo apt-get install at

# Для Red Hat/CentOS
sudo yum install at
```

Запустите и включите демон `atd`:

```bash
sudo systemctl start atd
sudo systemctl enable atd
```

Проверьте статус:

```bash
sudo systemctl status atd
```

### 2. Постановка задачи в очередь на выполнение

#### Формат команды:

```bash
at HH:MM YYYY-MM-DD
```

где:

- `HH:MM` — время в 24-часовом формате;
- `YYYY-MM-DD` — дата в ISO-формате.

#### Пример:

Запланировать выполнение команды `backup.sh` 1 июля 2025 года в 23:00:

```bash
echo "/path/to/backup.sh" | at 23:00 2025-07-01
```

Или интерактивно:

```bash
at 23:00 2025-07-01
```

После этого вы попадёте в приглашение ввода, где можно написать несколько команд, например:

```bash
/path/to/backup.sh
/path/to/cleanup.sh
```

Для завершения нажмите `Ctrl+D`.

### 3. Просмотр очереди задач `at`

Для просмотра всех запланированных заданий используйте:

```bash
atq
```

Вывод будет примерно таким:

```
1   2025-07-01 23:00 a user
2   2025-07-02 08:00 a user
```

- `1`, `2` — номера заданий;
- дата и время — время выполнения;
- `a` — очередь (обычно `a`);
- `user` — имя пользователя, от которого запланирована задача.

### 4. Удаление (отмена) задачи из очереди

Чтобы удалить задание, используйте команду `atrm` с номером задания из вывода `atq`:

```bash
atrm 
```

Пример:

```bash
atrm 1
```

Удалит задание с номером 1.

### 5. Дополнительные советы

- Используйте абсолютное указание времени и даты в формате ISO, чтобы избежать ошибок:

```bash
at 09:30 2025-12-31
```

- Для выполнения команды через некоторое время от текущего момента можно использовать относительные выражения:

```bash
echo "your_command" | at now + 2 hours
```

- Все команды в `at` выполняются с правами пользователя, который их запланировал.

## Итог: основные команды

| Действие                 | Команда                          | Пример                           |
|--------------------------|---------------------------------|---------------------------------|
| Запланировать задачу     | `at HH:MM YYYY-MM-DD`            | `echo "ls -l" | at 14:00 2025-07-01` |
| Просмотреть очередь      | `atq`                           | `atq`                           |
| Удалить задачу           | `atrm `           | `atrm 2`                       |
← Previous Next →
Back to list