299
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
this post was submitted on 09 Apr 2024
299 points (98.7% liked)
Linux
48186 readers
1376 users here now
From Wikipedia, the free encyclopedia
Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).
Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.
Rules
- Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.
- No misinformation
- No NSFW content
- No hate speech, bigotry, etc
Related Communities
Community icon by Alpár-Etele Méder, licensed under CC BY 3.0
founded 5 years ago
MODERATORS
How can I run a sudo command automatically on startup? I need to run sudo alsactl restore to mute my microphone from playing In my own headphones on every reboot. Surely I can delegate that to the system somehow?
If you run a systemd distro (which is most distro, arch, debian, fedora, and most of their derivatives), you can create a service file, which will autostart as root on startup.
The service file
/etc/systemd/system/<your service>.service
should likethen
you can check its status via
you will need to change
<your service>
to your desired service name.For details, read: https://linuxhandbook.com/create-systemd-services/
This one seemed perfect but nothing lasts after the reboot for whatever reason. If i manually re-enable the service its all good so I suspect theres no issue with the below - I added the after=multi-user.target after the first time it didn't hold after reboot.
When I run a status check it shows it deactivates as soon as it runs
Does
after=...
solve the problem or cause the problem? Sorry, I cannot parse what you were trying to say.It seems to have no effect either way. Originally I attempted without, then when it didn't hold after a reboot and some further reading I added the After= line in attempt to ensure the service isn't trying to initiate before it should be possible.
I can manually enable the service with or without the After= line with the same results of it actually working. Just doesn't hold after a reboot.
That is interesting. BTW, I don't assume that command will run forever right, i.e. it will terminate relatively soon? so that could be why the service is deactivated, not because it is not run. You can try to add
; echo "command terminated"
at the end of ExecStart to see if it is terminated, you can also try to echo the exit code to debug.If the program you use has a verbose mode, you can also try to turn it on to see if there is any error. EDIT: indeed,
alsactrl restore --debug
There is also a possiblity that this service is run before the device you need to restore is loaded, so it won't have any effect.
On a related note, did you install the program via your package manager, and what distro are you running. Because sometimes SELinux will block the program running. But the error message will say permission denied, instead of your message.
Running something at start-up can be done multiple ways:
Try paveaucontrol, it has an option to lock settings plus it's a neat app to call when you need to customise settings. You could also add user to the group that has access to mic.
You got some good answers already, here is one more option: Create a *.desktop file to run sudo alsactrl, and copy the *.desktop file ~/.config/autostart (Might need to configure sudo to run alsactrl w/o password.)
IMHO the cleanest option is SystemD.