{"id":13581611,"url":"https://github.com/immortal/immortal","last_synced_at":"2026-03-11T11:31:05.828Z","repository":{"id":9500811,"uuid":"62328342","full_name":"immortal/immortal","owner":"immortal","description":"⭕  A *nix cross-platform (OS agnostic) supervisor","archived":false,"fork":false,"pushed_at":"2024-07-21T19:15:39.000Z","size":1780,"stargazers_count":830,"open_issues_count":2,"forks_count":53,"subscribers_count":14,"default_branch":"master","last_synced_at":"2025-12-18T09:53:04.420Z","etag":null,"topics":["daemon","http","nix-cross-platform","os-agnostic","process","supervisor","unix","unix-socket"],"latest_commit_sha":null,"homepage":"https://immortal.run","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/immortal.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"nbari"}},"created_at":"2016-06-30T17:02:27.000Z","updated_at":"2025-12-01T14:25:06.000Z","dependencies_parsed_at":"2024-06-18T20:05:10.197Z","dependency_job_id":"293a8af3-7b7e-4586-b61b-8fb547762feb","html_url":"https://github.com/immortal/immortal","commit_stats":{"total_commits":764,"total_committers":10,"mean_commits":76.4,"dds":"0.014397905759162333","last_synced_commit":"e33a880a2e6f5fb2cb09e6809534d5b87a622855"},"previous_names":[],"tags_count":39,"template":false,"template_full_name":null,"purl":"pkg:github/immortal/immortal","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/immortal%2Fimmortal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/immortal%2Fimmortal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/immortal%2Fimmortal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/immortal%2Fimmortal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/immortal","download_url":"https://codeload.github.com/immortal/immortal/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/immortal%2Fimmortal/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30379783,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-11T06:09:32.197Z","status":"ssl_error","status_checked_at":"2026-03-11T06:09:17.086Z","response_time":84,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["daemon","http","nix-cross-platform","os-agnostic","process","supervisor","unix","unix-socket"],"created_at":"2024-08-01T15:02:07.814Z","updated_at":"2026-03-11T11:31:05.795Z","avatar_url":"https://github.com/immortal.png","language":"Go","funding_links":["https://github.com/sponsors/nbari"],"categories":["Utilities","Go","Utility","公用事业公司","工具库","\u003ca name=\"system\"\u003e\u003c/a\u003eSystem tools","实用工具","工具库`可以提升效率的通用代码库和工具`","實用工具","CLI Utilities"],"sub_categories":["Utility/Miscellaneous","Advanced Console UIs","HTTP Clients","实用程序/Miscellaneous","交流","查询语","Fail injection","高级控制台界面","\u003cspan id=\"高级控制台用户界面-advanced-console-uis\"\u003e高级控制台用户界面 Advanced Console UIs\u003c/span\u003e","高級控制台界面"],"readme":"# ⭕  immortal\n\n[![CircleCI](https://circleci.com/gh/immortal/immortal.svg?style=svg)](https://circleci.com/gh/immortal/immortal)\n[![Build Status](https://travis-ci.org/immortal/immortal.svg?branch=develop)](https://travis-ci.org/immortal/immortal)\n[![Coverage Status](https://coveralls.io/repos/github/immortal/immortal/badge.svg?branch=master)](https://coveralls.io/github/immortal/immortal?branch=master)\n[![codecov](https://codecov.io/gh/immortal/immortal/branch/master/graph/badge.svg)](https://codecov.io/gh/immortal/immortal)\n[![Go Report Card](https://goreportcard.com/badge/github.com/immortal/immortal)](https://goreportcard.com/report/github.com/immortal/immortal)\n\nA *nix cross-platform (OS agnostic) supervisor\n\nhttps://immortal.run/\n\n[![GitHub release](https://img.shields.io/github/release/immortal/immortal.svg)](https://github.com/immortal/immortal/releases)\n[![GoDoc](https://godoc.org/github.com/immortal/immortal?status.svg)](https://godoc.org/github.com/immortal/immortal)\n[![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat)](https://github.com/immortal/immortal/blob/master/CONTRIBUTING.md)\n\nLinux precompiled binaries\n\n[![deb](https://img.shields.io/badge/deb-packagecloud.io-844fec.svg)](https://packagecloud.io/immortal/immortal)\n[![rpm](https://img.shields.io/badge/rpm-packagecloud.io-844fec.svg)](https://packagecloud.io/immortal/immortal)\n\n## run on behalf other system user\n\nIf services need to run on behalf other system user `www, nobody, www-data`,\nnot `root`, **immortal** should be compiled from source for the desired\ntarget/architecture, otherwise, this error may be returned:\n\n    Error looking up user: \"www\". user: Lookup requires cgo\n\nSee more: https://golang.org/cmd/cgo/\n\nIf using [FreeBSD](https://github.com/freebsd/freebsd-ports/tree/master/sysutils/immortal)\nor [macOS](https://github.com/immortal/homebrew-tap)\nyou can install using [pkg/ports](http://immortal.run/freebsd/)\nor [homebrew](http://immortal.run/mac/), for other platforms work is in\nprogress, any help for making the port/package for other systems would be\nappreciated.\n\n## Compile from source\n\nSetup go environment https://golang.org/doc/install\n\n\u003e go \u003e= 1.12 is required\n\nFor example using $HOME/go for your workspace\n\n    $ export GOPATH=$HOME/go\n\nCreate the directory:\n\n    $ mkdir -p $HOME/go/src/github.com/immortal\n\nClone project into that directory:\n\n    $ git clone git@github.com:immortal/immortal.git $HOME/go/src/github.com/immortal/immortal\n\nBuild by just typing make:\n\n    $ cd $HOME/go/src/github.com/immortal/immortal\n    $ make\n\nTo install/uninstall:\n\n    $ make install\n    $ make uninstall\n\n# configuration example\n\nContent of file `/usr/local/etc/immortal/www.yml`:\n\n```yaml\n# pkg install go-www\ncmd: www\ncwd: /usr/ports\nlog:\n    file: /var/log/www.log\n    age: 10  # seconds\n    num: 7   # int\n    size: 1  # MegaBytes\nwait: 1\nrequire:\n  - foo\n  - bar\n```\n\nIf `foo` and `bar` are not running, the service `www` will not be started. Skip `age`, `num` \u0026 `size` options to avoid `log-rotation` completely.\n\n\u003e `foo` and `bar` are the names for the services defined on the same path www.yaml is located, foo.yml \u0026 bar.yml\n\n# Paths\n\nWhen using immortaldir:\n\n    /usr/local/etc/immortal\n    |--foo.yml\n    |--bar.yml\n    `--www.yml\n\nThe name of the `file.yml` will be used to reference the service to be\ndaemonized excluding the extension `.yml`.:\n\n    foo\n    bar\n    www\n\n## /var/run/immortal/\u003cname\u003e\n\n    /var/run/immortal\n    |--foo\n    |  |-lock\n    |  `-immortal.sock\n    |--bar\n    |  |-lock\n    |  `-immortal.sock\n    `--www\n       |-lock\n       `-immortal.sock\n\n\n## immortal like non-root user\n\nAny service launched like not using using ``immortaldir`` will follow this\nstructure:\n\n    ~/.immortal\n    |--(pid)\n    |  |--lock\n    |  `--immortal.sock\n    |--(pid)\n    |  |--lock\n    |  `--immortal.sock\n    `--(pid)\n       |--lock\n       `--immortal.sock\n\nThe `-name` argument takes a non-path (e.g., \"myservice\"), and the argument will be used instead of the pid in the directory structure. For example, `immortal -ctl myservice sleep 1000` will be:\n\n    ~/.immortal\n    |--myservice\n    |  |--lock\n    |  `--immortal.sock\n\nThe `-ctl` argument takes precedence over the `-name` argument.\n\n# immortalctl\n\nWill print current status and allow to manage the services\n\n# debug\n\n    pgrep -fl \"immortal -ctl\"  | awk '{print $1}' | xargs watch -n .1 pstree -p\n\n# Test status using curl \u0026 [jq](https://stedolan.github.io/jq/)\n\nstatus:\n\n    curl --unix-socket immortal.sock http:/status -s | jq\n\n\u003e note the single '/' https://superuser.com/a/925610/284722\n\n\ndown:\n\n    curl --unix-socket immortal.sock http://im/signal/d -s | jq\n\nup:\n\n    curl --unix-socket immortal.sock http://im/signal/u -s | jq\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimmortal%2Fimmortal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fimmortal%2Fimmortal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimmortal%2Fimmortal/lists"}