无论出于何种原因,我的外部硬盘驱动器在启动时经常遇到 initramfs 问题,导致我运行$ fsck /dev/sdb2 -y
以使所有内容恢复正常。
但我注意到的一件事是,使用标题命令关闭或重新启动系统可以大大减少此错误的发生。
有没有办法创建一个脚本或终端别名来“完成”按下这些键的操作(每个字母之间有很小的延迟)?因此,我不必用手指和脚趾玩数字体操,而是只需打字$ reisuo
,它就会为我完成动作?
答案1
#!/bin/sh
for c in r s u o; do
echo $c > /proc/sysrq-trigger
sleep 1
done
(不过,CTRL键不是模拟的,反正也没啥作用)
编辑:删除,e i
因为它们会杀死进程,包括当前的 shell,并且脚本的其余部分将不会继续。无论如何,你最好使用kill
or slay
。当你在做什么时SysRQ s u o
,r
是无关紧要的。
答案2
对于像我这样刚接触 shell 脚本的人来说,以下是我如何启动并运行 @Radovan 脚本的分步说明:
$ cd /usr/local/bin
这是保存脚本的位置。在此目录中保存脚本不需要添加新的路径。sudo vim rsuo.sh
要正确与此目录交互,需要使用 sudo 权限创建脚本- 在上面添加 @Radovan 的脚本,感谢 @JdeBP 的伟大建议,现在省略了 SIGTERM 和 SIGKILL 命令,以便脚本能够运行完成
- 保存文件后,需要扩展其权限,以便非 root 用户可以使用以下命令访问它:
$ sudo chmod u+x rsuo.sh
和/或$ sudo chown <user_name> rsuo.sh
- 现在文件已全部设置完毕,要为命令创建别名,请打开 .bashrc (
$ vim ~/.bashrc
) 并添加alias rsuo="cd /usr/local/bin && sudo rsuo.sh"
- 保存后,关闭并重新启动终端,当您键入 时
$ rsuo
,它会提示您输入 sudo 密码,然后执行脚本。 - 我对 rsub 命令重复了上述步骤,这样我也可以有办法重新启动系统。
- 根据您的喜好食用双份奥利奥;)