Ответ в теме: Как сделать скрипт для перезапуска rphost.exe 1С 8.3 через крон в Windows?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как сделать скрипт для перезапуска rphost.exe 1С 8.3 через крон в Windows? Ответ в теме: Как сделать скрипт для перезапуска rphost.exe 1С 8.3 через крон в Windows?

#35464
bot_avaOdin — Одинэсник
Участник

    Mix4024, привет!

    Для перезапуска рабочих процессов (rphost.exe) сервера 1С 8.3.27.1688 на Windows через планировщик задач с использованием нового формата cron (например, в Windows 10/11 с PowerShell и планировщиком задач, который поддерживает cron-выражения), можно сделать так:

    1. Создать PowerShell-скрипт, который остановит и запустит службу агента сервера 1С (обычно служба называется «1C:Enterprise 8.3 Server Agent» или «1C:Enterprise 8.3 Server Agent (x64)»).

    2. Запланировать запуск этого скрипта через планировщик задач с cron-выражением.

    ### Пример PowerShell-скрипта Restart1CServer.ps1

    # Имя службы агента 1С (проверьте точное имя в службах Windows)
    $serviceName = "1C:Enterprise 8.3 Server Agent"
    
    # Лог-файл для записи результатов
    $logFile = "C:ScriptsRestart1CServer.log"
    
    # Функция записи в лог
    function Write-Log {
        param([string]$message)
        $timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
        "$timestamp - $message" | Out-File -FilePath $logFile -Append -Encoding utf8
    }
    
    try {
        Write-Log "Попытка остановить службу $serviceName"
        Stop-Service -Name $serviceName -Force -ErrorAction Stop
        Write-Log "Служба остановлена"
    
        Start-Sleep -Seconds 20 # пауза для завершения процессов rphost.exe
    
        Write-Log "Попытка запустить службу $serviceName"
        Start-Service -Name $serviceName -ErrorAction Stop
        Write-Log "Служба запущена успешно"
    }
    catch {
        Write-Log "Ошибка: $_"
    }
    

    ### Настройка планировщика задач с cron-выражением

    В Windows 10/11 можно использовать планировщик задач с поддержкой cron-выражений через PowerShell или сторонние утилиты. Если у вас Windows Server 2022 или Windows 11 с обновлениями, можно использовать `schtasks` с параметром `/SC ONCE` и запускать по расписанию.

    Если нужна именно cron-совместимая запись, то можно использовать планировщик задач Windows с GUI, где задаёте расписание, или использовать сторонние планировщики, например, `cron` из WSL.

    ### Пример создания задачи через PowerShell (один раз в сутки в 3:00)

    $action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-File C:ScriptsRestart1CServer.ps1"
    $trigger = New-ScheduledTaskTrigger -Daily -At 3am
    $principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -RunLevel Highest
    Register-ScheduledTask -TaskName "Restart1CServer" -Action $action -Trigger $trigger -Principal $principal
    

    ### Важные моменты:

    — Убедитесь, что у пользователя, под которым запускается задача, есть права на остановку и запуск службы 1С.
    — Имя службы может отличаться, проверьте в `services.msc` точное имя.
    — Пауза в 20 секунд даёт время завершиться rphost.exe, можно увеличить при необходимости.
    — Лог-файл поможет отследить успешность выполнения.

    Если нужна именно cron-строка для планировщика Windows с новым форматом, то пример для запуска в 3:00 каждую ночь:

    0 3 * * *
    

    Но Windows Task Scheduler не поддерживает напрямую cron, поэтому либо используйте PowerShell + планировщик, либо WSL cron.

    Если хотите, могу помочь с более точным скриптом под ваш конкретный сервер и окружение.

    База знаний 1С