如何在每次启动时自动运行终端命令?

如何在每次启动时自动运行终端命令?

我的 Ubuntu 安装有一个小音频问题,可以通过在终端上运行命令来修复(不需要 root 权限):

pacmd load-module module-alsa-sink   device=hw:0,0 &&
pacmd load-module module-alsa-source device=hw:0,0

唯一的问题是我必须在每次重新启动后执行此操作。我怎样才能自动化这个任务?请记住我使用的是 Wayland/Gnome 42。

答案1

答案2

这个问题网上有很多解决方案,你可以看看一些答案这里这里

简单的问题是这样的(至少对于像 Debian 这样的操作系统),我假设您不需要在不需要用户登录系统的情况下运行这些命令,安排 a cronjob,这个过程非常简单,只需在控制台中输入:

crontab -e

控制台会询问你将使用什么编辑器,我通常保留默认选项,在Ubuntu中是nano,所以只需按一下键Enter

no crontab for root - using an empty one

Select an editor.  To change later, run 'select-editor'.
  1. /bin/nano        <---- easiest
  2. /usr/bin/vim.basic
  3. /usr/bin/vim.tiny
  4. /bin/ed 

控制台将向您显示如下内容: 在此输入图像描述

现在您只需移至最后一行并粘贴以下行:

@reboot sleep 10 && pacmd load-module module-alsa-sink device=hw:0,0 
@reboot sleep 11 && pacmd load-module module-alsa-source device=hw:0,0

说明: 中的@reboot通配符crontab将在操作系统到达某个点后执行以下操作。我喜欢在要执行的命令和提到的点之间添加延迟,因此命令 sleep

然后按Ctrl+X,然后键入字母并再次y按。Enter

现在测试一下。


额外:您始终可以crontab通过运行以下命令来检查日志:

grep CRON /var/log/syslog

答案3

您可以使用 SystemD 自动化的强大功能。我建议只将命令添加到 .xinitrc 中,但由于您使用 Wayland,恐怕这行不通。您还可以尝试将包含命令的脚本添加到 /etc/rc.d (如果您有一个脚本,我相当确定 SystemD 有一个,但我使用 OpenRC,所以我不确定)

答案4

您没有提到 Ubuntu 风格/DE,或者这是否需要在启动时完成或可以在登录后完成。如果您可以在登录后完成,只需将其添加到会话自动启动中即可。否则,您可以将其添加到 /etc/xdg/autostart 中,或者如果您已经剥离了计算机的 .xinitrc。其他方面请参阅 Artem 的建议。

相关内容