{"id":20310953,"url":"https://github.com/progrium/systembits","last_synced_at":"2026-03-10T11:30:57.164Z","repository":{"id":18814548,"uuid":"22029215","full_name":"progrium/systembits","owner":"progrium","description":"Simplest profiler ever. Like ohai but just shell scripts.","archived":false,"fork":false,"pushed_at":"2014-07-23T21:08:25.000Z","size":156,"stargazers_count":40,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-11T16:12:31.668Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/progrium.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-07-20T08:35:58.000Z","updated_at":"2022-09-14T16:07:26.000Z","dependencies_parsed_at":"2022-09-24T22:41:03.518Z","dependency_job_id":null,"html_url":"https://github.com/progrium/systembits","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/progrium/systembits","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/progrium%2Fsystembits","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/progrium%2Fsystembits/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/progrium%2Fsystembits/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/progrium%2Fsystembits/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/progrium","download_url":"https://codeload.github.com/progrium/systembits/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/progrium%2Fsystembits/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30332257,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T05:25:20.737Z","status":"ssl_error","status_checked_at":"2026-03-10T05:25:17.430Z","response_time":106,"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":[],"created_at":"2024-11-14T17:35:08.106Z","updated_at":"2026-03-10T11:30:57.080Z","avatar_url":"https://github.com/progrium.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# systembits\n\nSimplest possible system profiler protocol and tool for Linux. Like ohai but just shell scripts.\n\n## Using systembits\n\nSystembits is a collection of system probes (or bits) that can be run individually or run together to merge into a single JSON data structure. Here's example output from the default bits, pretty-printed with `jq`:\n\n\t$ ./systembits | jq .\n\t{\n\t  \"memory\": {\n\t    \"used\": 935920,\n\t    \"capacity\": 1017912\n\t  },\n\t  \"disk\": {\n\t    \"usage\": {\n\t      \"available\": 95184496,\n\t      \"used\": 189830764\n\t    },\n\t    \"sizes\": {\n\t      \"sda1\": 41251136\n\t    }\n\t  },\n\t  \"cpu\": {\n\t    \"load\": 0.01,\n\t    \"num_cores\": 1,\n\t    \"usage\": {\n\t      \"total\": 4.9,\n\t      \"user\": 2.1,\n\t      \"system\": 2.8\n\t    }\n\t  }\n\t}\n\n## Probe protocol: TOML over STDOUT\n\nThe heart of systembits is a simple protocol for collecting system probe data into an easy-to-consume JSON structure from easy-to-produce TOML structures.\n\nHere is an example probe:\n\n\t#!/bin/bash\n\techo \"[cpu.usage]\"\n\techo \"system=$(top -b -n 1 | grep Cpu | awk '{print $4}')\"\n\techo \"user=$(top -b -n 1 | grep Cpu | awk '{print $2}')\"\n\techo \"total=$(top -b -n 1 | grep Cpu | awk '{print $2+$4}')\"\n\nSee how simple that is? It's not a \"plugin\" for a fancy framework using some DSL made in Ruby. It's a shell script, it can be any language, it just needs to output TOML.\n\nThe collector included (`./systemsbits`) is a simple Ruby script that just walks subdirectories for executable scripts, collects their TOML output, does a recursive merge of it all into a single data structure, and outputs JSON. \n\nIn this implementation, you can disable probes by either removing them or turning off their execute bit. \n\nSince this puts the emphasis on the probes, you can do the collection and merging however you like. Maybe you want to make a web API to the collected probe data and run the probes concurrently. Ignore `./systembits` and just do that yourself then, using all the same probes.\n\n## Adding probes\n\nFeel free to send PRs for useful probes. This project is mostly a library of probes. No specific language necessary, but something simple and portable (like Bash) is recommended. And maybe document your probe with comments...\n\n## Sponsor\n\nThis project was made possible by [DigitalOcean](http://digitalocean.com).\n\n## License\n\nBSD","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprogrium%2Fsystembits","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprogrium%2Fsystembits","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprogrium%2Fsystembits/lists"}