npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

my-systemd

v0.2.0

Published

Find the systemd services you created and forgot the names of.

Readme

my-systemd

Find the systemd services you created and forgot the names of.

systemctl에 뭐라고 올렸는지 까먹었을 때, 내가 만든 서비스만 보여주는 CLI.

my-systemd is a tiny npm CLI for VPS, home server, and side-project operators who create their own systemd services and later forget the exact service names.

The whole UX

Install once:

npm i -g my-systemd

Then just run:

my-svcs

That is the main product. It lists the systemd services that look like yours.

No global install? This also works:

npx my-systemd

Tiny commands

my-svcs             # list your systemd services
my-svcs failed      # only failed ones
my-svcs running     # only running ones
my-svcs abc         # search name/path/description
my-svcs logs abc    # recent logs for abc.service
my-svcs doctor      # quick failed/suspicious report
my-svcs group       # manage saved service groups

Advanced, only if you need it:

my-svcs --user      # only ~/.config/systemd/user/*.service
my-svcs --system    # only /etc/systemd/system/*.service
my-svcs all         # include generated/vendor-like local files too
my-svcs --json      # machine-readable output

The package-name command also works:

my-systemd

Example output:

#  NAME                 STATE   ENABLED   SCOPE   PATH
1  abc-1234.service     active  enabled   system  /etc/systemd/system/abc-1234.service
2  old-worker.service   failed  disabled  user    ~/.config/systemd/user/old-worker.service

The same service filename can appear twice when you have both a system unit and a user unit with that name. The SCOPE column tells you whether each row is the system unit or the user unit.

Groups

Create a group from the current numbered list:

my-svcs
my-svcs group create web @1 @4 @5

Numbers like @1 are selection shortcuts only. my-systemd stores explicit service ids like system:abc.service and user:worker.service in ~/.config/my-systemd/groups.json, so the group does not depend on list numbers staying the same later. #1 is accepted only if your shell passes it through, but @1 is the recommended form because # starts comments in common shells.

You can also add, remove, inspect, or delete only the saved group definition:

my-svcs group add web @7
my-svcs group drop web @4
my-svcs group show web
my-svcs group status web
my-svcs group doctor web
my-svcs group delete web

If group drop makes a group empty, it asks before deleting the empty group:

Delete empty group? [y/N]

group delete removes only the saved group definition. It does not delete, stop, disable, or edit any systemd service.

Grouped service controls are dry-run by default:

my-svcs group start web
my-svcs group stop web
my-svcs group restart web

Use --yes only when you want to execute the matching systemctl calls:

my-svcs group restart web --yes

Uninstall

Remove the package:

npm uninstall -g my-systemd

That removes the my-svcs and my-systemd commands. Saved groups are user data and stay in ~/.config/my-systemd/groups.json. Remove them too only if you no longer want the saved group definitions:

rm -rf ~/.config/my-systemd

What it looks at

It focuses on local service files:

  • system scope: /etc/systemd/system/*.service
  • user scope: ~/.config/systemd/user/*.service

It intentionally ignores distro/vendor units from places like /lib/systemd/system and /usr/lib/systemd/system.

By default it also hides common generated/vendor-like files that can appear in local directories, such as snap.*.service and dbus-org.*.service. Use my-svcs all or my-svcs --all if you want those too.

Why not just systemctl list-units?

systemctl list-units is great, but it shows what systemd knows about right now — including lots of distro services. my-systemd starts from the places where people usually put their own units, then asks systemd for status.

That makes the default answer closer to:

“What did I put in systemd again?”

not:

“What exists in systemd?”

Safety boundary

my-systemd is lookup-first.

Listing, logs, doctor, and group edits do not change systemd services. group delete and group drop only change the saved group config. group start, group stop, and group restart print a dry-run plan unless you pass --yes.

It does not enable, disable, edit, or remove services.

Requirements

  • Linux with systemd
  • Node.js 20+

On machines without systemd, my-systemd prints a friendly unavailable status instead of pretending to manage anything.

Development

npm test
npm run build
node bin/my-systemd.js --help
npm pack --dry-run

The implementation has no runtime dependencies and uses Node's built-in test runner.