{"id":26197633,"url":"https://github.com/hackerb9/stutter","last_synced_at":"2025-07-03T01:33:18.544Z","repository":{"id":271529553,"uuid":"913730811","full_name":"hackerb9/stutter","owner":"hackerb9","description":"Slow down a process to a given duty cycle","archived":false,"fork":false,"pushed_at":"2025-01-08T10:27:52.000Z","size":30,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-25T23:03:50.100Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hackerb9.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-01-08T08:46:39.000Z","updated_at":"2025-01-08T10:27:56.000Z","dependencies_parsed_at":null,"dependency_job_id":"c88bd30e-9540-4081-9eef-09f1d9e4bc33","html_url":"https://github.com/hackerb9/stutter","commit_stats":null,"previous_names":["hackerb9/stutter"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hackerb9/stutter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hackerb9%2Fstutter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hackerb9%2Fstutter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hackerb9%2Fstutter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hackerb9%2Fstutter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hackerb9","download_url":"https://codeload.github.com/hackerb9/stutter/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hackerb9%2Fstutter/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261967126,"owners_count":23237662,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":"2025-03-12T02:48:17.965Z","updated_at":"2025-06-25T23:04:17.958Z","avatar_url":"https://github.com/hackerb9.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# stutter\nForce a process to pause its work every once in a while.\n\nIt's nicer than `nice`!\n\n## Usage\n\n\u003cul\u003e\n\n  **stutter** \u0026nbsp; -p _PID_\n\n\u003c/ul\u003e\n\nor: \n\n\u003cul\u003e\n  \n  **stutter** \u0026nbsp; _command_ \u0026nbsp; \\[ _command-arguments_ ... \\]\n\n\u003c/ul\u003e\n\n## Examples\n\n1. Run the 'dd' command under stutter. (^C will cancel both stutter and dd.)\n   ```\n   stutter dd if=/dev/zero of=/dev/null status=progress\n   ```\n   \n2. Cause existing process 8191 to stutter. (^C cancels stutter, not 8191.)\n\n        stutter -p 8191\n\n## Installation\n\nIt's a shell script, so just download [stutter][rawlink], mark it executable (`chmod +x`), and move it to your bin directory (`/usr/local/bin/stutter`).\n\n  [rawlink]: https://github.com/hackerb9/stutter/raw/refs/heads/main/stutter \"Download stutter shell script\"\n\n## Background\n\nThe `nice` command gives a hint to UNIX systems that certain processes should use less CPU. The Linux kernel additionally offers `ionice` and `chrt` which affect how often the process can access resources like the disk. However, those tools have often proven insufficient. Background processes which have been set as nice as possible can still interfere with high priority tasks, such as streaming video or the user interface. If you meet a processes which is needlessly impolite even after you've asked it to be nice, then this program is for you. Stutter forces a process to pause repeatedly (10 times a second by default) using UNIX signals. \n\nThis is particularly useful for background \"idle\" jobs launched from cron which should not interfere with interactive users. However, it has also proven handy to slow down processes for debugging issues that can normally be hard to reproduce such as timing, race conditions, and interrupt handling. \n\n## How it works\n\nTechnically, it uses SIGSTOP/SIGCONT with a 10% active duty cycle and 0.1s period. You can adjust the on/off time by editing [the script](stutter).\n\n```bash\n# A reasonable default is to have the process active for 0.01s and\n# sleep for 0.09s. (A 10% duty cycle with a period of 0.1s).\nontime=0.01\nofftime=0.09\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhackerb9%2Fstutter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhackerb9%2Fstutter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhackerb9%2Fstutter/lists"}