3.2 KiB
Linux Agent
Role
Agent_Linux/ogp_agent.pl is the Linux execution agent for GSP. It is responsible for:
- starting and stopping game servers
- managing
screensessions - reading logs
- running update/install tasks
- handling scheduler jobs
- performing query checks and status checks
Important Files
Agent_Linux/ogp_agent.plAgent_Linux/startups/Agent_Linux/includes/Agent_Linux/php-query/Agent_Linux/Cfg/Agent_Linux/Schedule/Agent_Linux/steamcmd/Agent_Linux/systemd/
Startup Logic
The Linux agent creates a managed screen session per server.
Key flow in ogp_agent.pl:
universal_start_without_decryptcreate_screen_cmdcreate_screen_cmd_loopreplace_OGP_Env_Vars
The agent builds the startup command from:
- the game XML template
- server parameters
- mod data
- control password
- path variables
The session name follows the OGP naming convention, for example:
OGP_HOME_000000123
Status Logic
Relevant functions:
is_screen_running_without_decryptget_screen_pid_without_decryptserver_status_without_decryptverify_server_stopped_without_decrypt
The status implementation should check:
- screen/session existence
- PID or child process information when available
- whether the game port is listening
- whether query metadata can be fetched
Marker files such as SERVER_STOPPED should not be treated as the final source of truth.
If the configured game port is listening but the managed screen/session is missing, the agent reports ONLINE with a warning in last_error. This mirrors the Windows agent and prevents a live game process from showing false offline/unknown solely because session tracking failed.
Optional Resource Stats Database
Resource stats database submission uses Perl DBI, but DBI is optional for normal agent startup. The agent lazy-loads DBI only when resource stats are actually submitted. Missing DBI.pm should disable database stats submission with a readable log message, not abort the agent at startup.
Logging
Relevant function:
get_log
The agent reads screen logs and may also copy a local log file into the game home. Logs should be treated as runtime output, not as a state store.
Scheduler
Linux scheduler functions live in ogp_agent.pl:
scheduler_dispatcherscheduler_server_actionscheduler_log_eventsscheduler_add_taskscheduler_del_taskscheduler_edit_taskscheduler_read_tasksscheduler_stopscheduler_list_tasks
The scheduler is agent-driven. Panel pages create or edit jobs, but the agent executes them.
Configuration Files
Useful configuration and runtime areas:
Agent_Linux/Cfg/Agent_Linux/startups/Agent_Linux/steamcmd/Agent_Linux/systemd/
The agent also maintains screen logs and helper scripts inside its runtime area.
Linux-Specific Notes
- The Linux agent uses
screenandsudo_exec_without_decrypt. - It can resolve server ownership and screen users via helper functions such as
find_user_by_screen_id. - It must remain portable across distro variants, so avoid assuming one exact init system or one exact binary path.
- For Windows-targeted games running under Linux, Wine-related path conversion appears in startup path handling.