Laravel Forge uses Supervisor to manage background processes, ensuring your long-running scripts stay active. This is particularly useful for maintaining daemons like ReactPHP applications. When a process stops unexpectedly, Supervisor automatically restarts it to maintain continuous operation.
Background processes can be configured on both a server and site level.To create a background process, navigate to the “Processes” tab on the server or site. Then, click the “Add background process” button. After providing the required fields, click the “Create background process” button.When creating a new background process, you’ll need to configure the following settings:
Name: Provide a descriptive name for the background process to help identify it.
Command: Specify the command that the background process should execute. For example: php artisan reverb:start.
Working Directory: Set the working directory for your command. This field is optional and can be left empty.
User: Choose the operating system user to run the command. The forge user is used by default.
Processes: Define how many instances of the process should run simultaneously.
Start Seconds: Set the minimum runtime (in seconds) required to consider the process startup successful.
Stop Seconds: Specify how long Supervisor waits for a graceful shutdown before forcing termination.
Stop Signal: Choose the signal used to terminate the program during shutdown.
For sites using Laravel and Statamic, creating a new background process will display two tabs: Queue worker or Custom.The Queue worker tab is designed to make configuring Laravel queue workers easier. Instead of manually writing the php artisan queue:work command, you can use the form to configure the following options:
PHP Version: The PHP version to use for the queue worker.
Queue Connection: The name of the queue connection (e.g., redis, database, sqs) in your config/queue.php file.
Number of Processes: How many instances of the queue worker should run simultaneously.
Queue: Which queue(s) the worker should process.
Backoff: The number of seconds to wait before retrying a failed job.
Sleep: The number of seconds the worker should sleep when no jobs are available.
Rest: The number of seconds to rest between jobs.
Timeout: The maximum number of seconds a job is allowed to run.
Tries: The maximum number of times a job may be attempted.
Memory: The memory limit (in megabytes) for the queue worker.
Environment: The application environment.
Force: Force the worker to run even in maintenance mode.
Laravel Forge will generate a preview of the queue worker command based on your selections, showing you the exact command that will be configured as a background process. This preview updates in real-time as you adjust the settings, allowing you to verify the configuration before creating the background process.
You can manually restart any background process using the command sudo -S supervisorctl restart daemon-{id}:*, where {id} represents the background process’s unique identifier. For instance, to restart a background process with ID 65654, you would run sudo -S supervisorctl restart daemon-65654:*.This command can also be integrated into your deployment scripts to restart background processes automatically during deployments.
Laravel Forge automatically configures each background process to maintain its own log file within the /home/forge/.forge/ directory. Log files follow the naming convention daemon-*.log.
When using Laravel Forge’s user isolation features, daemon log files are located in the .forge directory within /home/{username}, where {username} corresponds to the user assigned to run the process.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Laravel Forge","colors":{"primary":"#18B69B","light":"#18B69B","dark":"#18B69B"},"logo":{"light":"https://mintcdn.com/forge-laravel/sHyXHYyrLoATu64X/logo/logo.svg?fit=max\u0026auto=format\u0026n=sHyXHYyrLoATu64X\u0026q=85\u0026s=469c693d945743b5870032ffac8d67b7","dark":"https://mintcdn.com/forge-laravel/sHyXHYyrLoATu64X/logo/logo.svg?fit=max\u0026auto=format\u0026n=sHyXHYyrLoATu64X\u0026q=85\u0026s=469c693d945743b5870032ffac8d67b7","href":"https://forge.laravel.com"},"favicon":"https://mintcdn.com/forge-laravel/DhXK7kFkCTo-2V2J/favicon.png?fit=max\u0026auto=format\u0026n=DhXK7kFkCTo-2V2J\u0026q=85\u0026s=eda7438a183a53fc59e814b80feebd59","api":{"playground":{"display":"simple"},"examples":{"languages":["php","bash","javascript","go"]}},"background":{"decoration":"windows"},"navbar":{"primary":{"type":"button","label":"Get started","href":"https://forge.laravel.com"}},"footer":{"socials":{"x":"https://x.com/laravel","github":"https://github.com/laravel","discord":"https://discord.com/invite/laravel","linkedin":"https://linkedin.com/company/laravel"}},"seo":{"metatags":{"canonical":"https://laravel.com/forge/docs"}},"fonts":{"heading":{"family":"Figtree"},"body":{"family":"Figtree"}},"integrations":{"fathom":{"siteId":"UZINDLYX"}},"contextual":{"options":["copy","chatgpt","claude","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Community","icon":"discord","href":"https://discord.gg/laravel"},{"anchor":"Blog","icon":"newspaper","href":"https://blog.laravel.com"},{"anchor":"Status","icon":"heart-pulse","href":"https://status.on-forge.com"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"forge-laravel","hasAudioNarration":false,"actualSubdomain":"forge-laravel","customDomains":["forge.laravel.com"],"gitSource":{"type":"github","owner":"laravel","repo":"forge-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae35736befa89197b16df06","collectionId":"706b0864-66ed-4e31-83ec-2dda6fe33b80","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae35736befa89197b16df06"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae35736befa89197b16df06","clientVersion":"0.0.4021","searchFilterCounts":[{"language":"default","tag":"Documentation","count":49},{"language":"default","tag":"Sites","count":11},{"language":"default","tag":"Resources","count":10},{"language":"default","tag":"Basics","count":9},{"language":"default","tag":"Servers","count":9},{"language":"default","tag":"Knowledge Base","count":7},{"language":"default","tag":"API Reference","count":5},{"language":"default","tag":"Introduction","count":5},{"language":"default","tag":"Troubleshooting","count":5},{"language":"default","tag":"Integrations","count":4}]},"assistantConfig":{},"basePath":"/docs","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[],"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":"/* latin-ext */\n@font-face {\n font-family: 'Instrument Sans';\n font-style: normal;\n font-weight: 400 500;\n font-stretch: 100%;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/instrumentsans/v4/pxiTypc9vsFDm051Uf6KVwgkfoSxQ0GsQv8ToedPibnr0She1YmV.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Instrument Sans';\n font-style: normal;\n font-weight: 400 500;\n font-stretch: 100%;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/instrumentsans/v4/pxiTypc9vsFDm051Uf6KVwgkfoSxQ0GsQv8ToedPibnr0SZe1Q.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* cyrillic-ext */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 300 600;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrodmgPn.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 300 600;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrMdmgPn.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* symbols2 */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 300 600;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFg08vz7ehw.woff2) format('woff2');\n unicode-range: U+2000-2001, U+2004-2008, U+200A, U+23B8-23BD, U+2500-259F;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 300 600;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrgdmgPn.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 300 600;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrkdmgPn.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 300 600;\n font-display: swap;\n src: url(/docs/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrcdmg.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\nbody{font-family:\"Instrument Sans\";font-weight:400}h1,h2,h3,h4{letter-spacing:-.025rem!important}code,pre{font-family:'Geist Mono',ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace}.font-semibold,b,h1,h2,h3,h4,strong{font-weight:500!important}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500!important;color:rgb(var(--primary-light))!important}.codeblock-dark div:not(:last-child){color:#fafafa}"}],"page":{"pagePath":"resources/background-processes","slug":"/resources/background-processes","pageMetadata":{"title":"Background Processes","description":"Learn how to configure and manage background processes on your Laravel Forge server.","href":"/resources/background-processes"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Learn how to configure and manage background processes on your Laravel Forge server.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`introduction`,children:`Introduction`}),`\n`,_jsxs(_components.p,{children:[`Laravel Forge uses `,_jsx(_components.a,{href:`http://supervisord.org`,children:`Supervisor`}),` to manage background processes, ensuring your long-running scripts stay active. This is particularly useful for maintaining daemons like `,_jsx(_components.a,{href:`http://reactphp.org/`,children:`ReactPHP`}),` applications. When a process stops unexpectedly, Supervisor automatically restarts it to maintain continuous operation.`]}),`\n`,_jsx(Heading,{level:`2`,id:`configuring-background-processes`,children:`Configuring background processes`}),`\n`,_jsx(_components.p,{children:`Background processes can be configured on both a server and site level.`}),`\n`,_jsx(_components.p,{children:`To create a background process, navigate to the “Processes” tab on the server or site. Then, click the “Add background process” button. After providing the required fields, click the “Create background process” button.`}),`\n`,_jsx(_components.p,{children:`When creating a new background process, you’ll need to configure the following settings:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Name:`}),` Provide a descriptive name for the background process to help identify it.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Command:`}),` Specify the command that the background process should execute. For example: `,_jsx(_components.code,{children:`php artisan reverb:start`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Working Directory:`}),` Set the working directory for your command. This field is optional and can be left empty.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`User:`}),` Choose the operating system user to run the command. The `,_jsx(_components.code,{children:`forge`}),` user is used by default.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Processes:`}),` Define how many instances of the process should run simultaneously.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Start Seconds:`}),` Set the minimum runtime (in seconds) required to consider the process startup successful.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Stop Seconds:`}),` Specify how long Supervisor waits for a graceful shutdown before forcing termination.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Stop Signal:`}),` Choose the signal used to terminate the program during shutdown.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`creating-laravel-queue-workers`,children:`Creating Laravel queue workers`}),`\n`,_jsxs(_components.p,{children:[`For sites using Laravel and Statamic, creating a new background process will display two tabs: `,_jsx(_components.strong,{children:`Queue worker`}),` or `,_jsx(_components.strong,{children:`Custom`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`The Queue worker tab is designed to make configuring Laravel queue workers easier. Instead of manually writing the `,_jsx(_components.code,{children:`php artisan queue:work`}),` command, you can use the form to configure the following options:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`PHP Version:`}),` The PHP version to use for the queue worker.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Queue Connection:`}),` The name of the queue connection (e.g., `,_jsx(_components.code,{children:`redis`}),`, `,_jsx(_components.code,{children:`database`}),`, `,_jsx(_components.code,{children:`sqs`}),`) in your `,_jsx(_components.code,{children:`config/queue.php`}),` file.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Number of Processes:`}),` How many instances of the queue worker should run simultaneously.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Queue:`}),` Which queue(s) the worker should process.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Backoff:`}),` The number of seconds to wait before retrying a failed job.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Sleep:`}),` The number of seconds the worker should sleep when no jobs are available.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Rest:`}),` The number of seconds to rest between jobs.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Timeout:`}),` The maximum number of seconds a job is allowed to run.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Tries:`}),` The maximum number of times a job may be attempted.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Memory:`}),` The memory limit (in megabytes) for the queue worker.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Environment:`}),` The application environment.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Force:`}),` Force the worker to run even in maintenance mode.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Laravel Forge will generate a preview of the queue worker command based on your selections, showing you the exact command that will be configured as a background process. This preview updates in real-time as you adjust the settings, allowing you to verify the configuration before creating the background process.`}),`\n`,_jsx(Heading,{level:`3`,id:`manually-restarting-background-processes`,children:`Manually restarting background processes`}),`\n`,_jsxs(_components.p,{children:[`You can manually restart any background process using the command `,_jsx(_components.code,{children:`sudo -S supervisorctl restart daemon-{id}:*`}),`, where `,_jsx(_components.code,{children:`{id}`}),` represents the background process’s unique identifier. For instance, to restart a background process with ID `,_jsx(_components.code,{children:`65654`}),`, you would run `,_jsx(_components.code,{children:`sudo -S supervisorctl restart daemon-65654:*`}),`.`]}),`\n`,_jsx(_components.p,{children:`This command can also be integrated into your deployment scripts to restart background processes automatically during deployments.`}),`\n`,_jsx(Heading,{level:`2`,id:`log-files`,children:`Log files`}),`\n`,_jsxs(_components.p,{children:[`Laravel Forge automatically configures each background process to maintain its own log file within the `,_jsx(_components.code,{children:`/home/forge/.forge/`}),` directory. Log files follow the naming convention `,_jsx(_components.code,{children:`daemon-*.log`}),`.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`When using Laravel Forge’s user isolation features, daemon log files are located in the `,_jsx(_components.code,{children:`.forge`}),` directory within `,_jsx(_components.code,{children:`/home/{username}`}),`, where `,_jsx(_components.code,{children:`{username}`}),` corresponds to the user assigned to run the process.`]})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Background Processes","description":"Learn how to configure and manage background processes on your Laravel Forge server.","href":"/resources/background-processes"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Introduction","slug":"introduction","depth":2,"children":[]},{"title":"Configuring background processes","slug":"configuring-background-processes","depth":2,"children":[{"title":"Creating Laravel queue workers","slug":"creating-laravel-queue-workers","depth":3,"children":[]},{"title":"Manually restarting background processes","slug":"manually-restarting-background-processes","depth":3,"children":[]}]},{"title":"Log files","slug":"log-files","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/forge-laravel/1bbd0658b78e8288/rudder.js","/docs/_mintlify/custom/forge-laravel/cf2463a5a064fd05/plain.js"],"subdomain":"forge-laravel","siteName":"Laravel Forge","title":"Background Processes - Laravel Forge","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-01-22T19:25:17.454Z","originalFileLocation":"resources/background-processes.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Learn how to configure and manage background processes on your Laravel Forge server.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Laravel Forge\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/forge-laravel/c_1rQpFWehdE_YrP/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/forge-laravel/c_1rQpFWehdE_YrP/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/forge-laravel/c_1rQpFWehdE_YrP/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/forge-laravel/c_1rQpFWehdE_YrP/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/forge-laravel/c_1rQpFWehdE_YrP/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/forge-laravel/c_1rQpFWehdE_YrP/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/forge-laravel/c_1rQpFWehdE_YrP/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/forge-laravel/c_1rQpFWehdE_YrP/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/forge-laravel/c_1rQpFWehdE_YrP/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Background Processes - Laravel Forge\">\u003cmeta data-mint-head property=\"og:description\" content=\"Learn how to configure and manage background processes on your Laravel Forge server.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Laravel Forge\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://laravel.com/forge/docs/resources/background-processes\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://forge-laravel.mintlify.app/_mintlify/api/og/v2?division=Resources\u0026amp;title=Background+Processes\u0026amp;description=Learn+how+to+configure+and+manage+background+processes+on+your+Laravel+Forge+server.\u0026amp;theme=1c0f39d14eacb1d14985e191\u0026amp;signature=4962f3958ef126c34f1bdc72ce64a013ebdebd275631890abef0342d8a0dabff\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Background Processes - Laravel Forge\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Learn how to configure and manage background processes on your Laravel Forge server.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://forge-laravel.mintlify.app/_mintlify/api/og/v2?division=Resources\u0026amp;title=Background+Processes\u0026amp;description=Learn+how+to+configure+and+manage+background+processes+on+your+Laravel+Forge+server.\u0026amp;theme=1c0f39d14eacb1d14985e191\u0026amp;signature=4962f3958ef126c34f1bdc72ce64a013ebdebd275631890abef0342d8a0dabff\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/docs/mintlify-assets/_mintlify/favicons/forge-laravel/c_1rQpFWehdE_YrP/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Laravel Forge\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#18B69B\">\u003clink data-mint-head rel=\"canonical\" href=\"https://laravel.com/forge/docs/resources/background-processes\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/resources/background-processes.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://laravel.com/#organization\",\"name\":\"Laravel Forge\",\"url\":\"https://laravel.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/forge-laravel/sHyXHYyrLoATu64X/logo/logo.svg?fit=max\u0026auto=format\u0026n=sHyXHYyrLoATu64X\u0026q=85\u0026s=469c693d945743b5870032ffac8d67b7\"}},{\"@type\":\"WebSite\",\"@id\":\"https://laravel.com/forge/docs#website\",\"name\":\"Laravel Forge\",\"url\":\"https://laravel.com/forge/docs\",\"publisher\":{\"@id\":\"https://laravel.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://laravel.com/forge/docs/resources/background-processes#webpage\",\"url\":\"https://laravel.com/forge/docs/resources/background-processes\",\"name\":\"Background Processes\",\"description\":\"Learn how to configure and manage background processes on your Laravel Forge server.\",\"dateModified\":\"2026-01-22T19:25:17.454Z\",\"isPartOf\":{\"@id\":\"https://laravel.com/forge/docs#website\"},\"breadcrumb\":{\"@id\":\"https://laravel.com/forge/docs/resources/background-processes#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://laravel.com/forge/docs/resources/background-processes#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Resources\",\"item\":\"https://laravel.com/forge/docs/resources/databases\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Background Processes\",\"item\":\"https://laravel.com/forge/docs/resources/background-processes\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://laravel.com/forge/docs/resources/background-processes#article\",\"headline\":\"Background Processes\",\"name\":\"Background Processes\",\"description\":\"Learn how to configure and manage background processes on your Laravel Forge server.\",\"url\":\"https://laravel.com/forge/docs/resources/background-processes\",\"mainEntityOfPage\":{\"@id\":\"https://laravel.com/forge/docs/resources/background-processes#webpage\"},\"dateModified\":\"2026-01-22T19:25:17.454Z\",\"publisher\":{\"@id\":\"https://laravel.com/#organization\"},\"isPartOf\":{\"@id\":\"https://laravel.com/forge/docs#website\"}}]}\u003c/script>","siteName":"Laravel Forge","nav":{"global":{"anchors":[{"anchor":"Community","icon":"discord","href":"https://discord.gg/laravel"},{"anchor":"Blog","icon":"newspaper","href":"https://blog.laravel.com"},{"anchor":"Status","icon":"heart-pulse","href":"https://status.on-forge.com"}]},"tabs":[{"tab":"Documentation","groups":[{"group":"Get Started","pages":[{"title":"Welcome to Laravel Forge","sidebarTitle":"Introduction","href":"/introduction"},{"title":"Laravel Forge CLI","href":"/cli"},{"title":"Laravel Forge SDK","href":"/sdk"}]},{"group":"Basics","pages":[{"title":"Organizations","href":"/organizations"},{"title":"Teams","href":"/teams"},{"title":"Server Providers","href":"/server-providers"},{"title":"Storage Providers","href":"/storage-providers"},{"title":"Source Control","href":"/source-control"},{"title":"SSH Keys","href":"/ssh"},{"title":"Recipes","href":"/recipes"},{"title":"Notifications","href":"/notifications"},{"title":"API","href":"/api"}]},{"group":"Servers","pages":[{"title":"Creating and Managing Servers","sidebarTitle":"Managing Servers","href":"/servers/the-basics"},{"title":"Server Types","href":"/servers/types"},{"title":"Laravel VPS","href":"/servers/laravel-vps"},{"title":"PHP","href":"/servers/php"},{"title":"Load Balancing","href":"/servers/load-balancing"},{"title":"Nginx Templates","href":"/servers/nginx-templates"},{"title":"Root Access / Security","sidebarTitle":"Security","href":"/servers/security"},{"title":"Monitoring","href":"/servers/monitoring"},{"title":"Real-Time Metrics","href":"/servers/real-time-metrics"}]},{"group":"Sites","pages":[{"title":"Creating and Managing Sites","sidebarTitle":"Managing Sites","href":"/sites/the-basics"},{"title":"Domains","href":"/sites/domains"},{"title":"Deployments","href":"/sites/deployments"},{"title":"Repository Access","href":"/sites/repository-access"},{"title":"Environment Variables","href":"/sites/environment-variables"},{"title":"Commands","href":"/sites/commands"},{"title":"Queues","href":"/sites/queues"},{"title":"Network","href":"/sites/network"},{"title":"User Isolation","sidebarTitle":"Isolation","href":"/sites/user-isolation"},{"title":"Laravel","href":"/sites/laravel"},{"title":"Logs","href":"/sites/logs"}]},{"group":"Resources","pages":[{"title":"Databases","href":"/resources/databases"},{"title":"Database Backups","href":"/resources/database-backups"},{"title":"Managed Databases","href":"/resources/managed-databases"},{"title":"Managed Cache","href":"/resources/managed-cache"},{"title":"Object Storage","sidebarTitle":"Object Storage","href":"/resources/object-storage"},{"title":"Caches","description":"Learn how to connect to Redis™ and Memcached on your Laravel Forge server.","href":"/resources/caches"},{"title":"Background Processes","href":"/resources/background-processes"},{"title":"Scheduler","description":"Learn how to configure and manage scheduled jobs on your Laravel Forge server.","href":"/resources/scheduler"},{"title":"Network","href":"/resources/network"},{"title":"Packages","href":"/resources/packages"}]},{"group":"Integrations","pages":[{"title":"Envoyer","href":"/integrations/envoyer"},{"title":"Sentry","href":"/integrations/sentry"},{"title":"Aikido","href":"/integrations/aikido"},{"title":"OpenClaw","sidebarTitle":"OpenClaw","href":"/integrations/openclaw"}]},{"group":"Other","pages":[{"title":"Support","mode":"wide","href":"/support"},{"title":"Changelog","href":"/changelog"},{"title":"Report Abuse","sidebarTitle":"Abuse","href":"/abuse"}]}]},{"tab":"Knowledge Base","pages":[{"title":"Knowledge Base","href":"/knowledge-base/servers"}]},{"tab":"API Reference","icon":"square-terminal","pages":[{"title":"API Reference","href":"/api-reference/introduction"}]}]},"title":"Background Processes - Laravel Forge","buildId":"dpl_DGmhKsAzJdVqypJzon18vViniWRY","deploymentId":"dpl_DGmhKsAzJdVqypJzon18vViniWRY","dynamics":[],"chunks":[]}