Linux Tweaks
1 删除残余的配置文件
通常Debian/Ubuntu删除软件包可以用两条命令
1 | sudo apt-get remove <package-name> |
remove将会删除软件包,但会保留配置文件.purge会将软件包以及配置文件都删除.
找出系统上哪些软件包留下了残余的配置文件
1 | dpkg --list | grep "^rc" |
1 | dpkg --list | grep "^rc" | cut -d " " -f 3 | xargs sudo dpkg --purge |
2 清理下载的缓存包
用sudo apt-get install
安装软件时,其下载的包都缓存在/var/cache/apt/archives/
目录中。如果要清理掉这些已下载的缓存包,那么可以执行命令0
1 | $ sudo apt-get autoclean |
3 清理孤立的库文件
有时候,你用apt-get安装一个软件包时会自动安装其他的依赖.当你删除掉这个软件包时,这些依赖也就没有用处了.这些没有用的依赖包叫做孤儿软件包,可以用下面的命令删除
1 | $ sudo apt-get autoremove |
不过apt-get autoremove
只会删除经apt-get
自动安装的依赖包,而你自己手动安装的依赖包则不会被删除,这时我们可以用deborphan
来彻底删除.
1 | $ sudo apt-get install deborphan |
4 删除多余的映像
Ubuntu Linux内核升级频繁,如果不删除旧的内核,将会占用大量磁盘空间,而且开机启动有诸多选项(这点,可以通过vim /boot/grub/menu.lst手工修改,即删除多余启动项)。这些操作成为释放空间的主要来源,删除一个内核映射约可以释放100M空间:-)
4.1 查看已安装内核映像
查看已安装内核映像:
1 | $ sudo dpkg --get-selections | grep linux-image |
4.2 查看当前内核版本
查看当前内核版本
1 | $ uname -r |
4.3 删除多余内核映像
删除旧的内核映像(只须保留linux-image-generic即可,和当前内核版本即可)。
1 | $ sudo apt-get purge linux-image-2.6.32-26-generic |
5 删除旧的编译库
5.1 查看已有的编译库
查看已有的内核C编译库,即头文件库:
1 | $ sudo dpkg --get-selections | grep linux-headers |
5.2 删除旧的编译库
编译库与内核版本一一样对应,只须保留与当前内核版本相对应的编译库,如此例的linux-headers-2.6.32-31-generic,其他的皆可删除。
1 | $ sudo apt-get purge linux-headers-2.6.28-19 |
Auto Login
Terminator
1 | :~$ systemctl get-default |
autologin
1 | :~$ systemctl edit getty@tty1 |
only start 1 tty
1 | :~$ sed -i 's|^NAutoVTs=\n|NAutoVTs=1|' /etc/systemd/logind.conf |
Graphical
1 | :~$ systemctl get-default |
GNOME
/etc/gdm3/daemon.conf
1 | # GDM configuration storage - modified by kali-root-login |
开机后直接进入Terminator
1 | # auto login Terminator |
魔法键组合 reisub - force reboot linux
原文
如果某一天你的 Linux 死机了,键盘不听使唤了,Ctrl+Alt+F1 已经没有任何反应,该怎么办呢?
使用“魔法键”:Alt+SysRq + r,e,i,s,u,b
说具体一点, 是一种系统请求, 直接交给内核处理。
键盘上一般都有一个键SysRq
, 和PrintScreen(截屏)
在一个键位上,这就是系统请求的键。
这里解释下:
其实 SysRq是一种叫做系统请求的东西, 按住 Alt-Print
的时候就相当于按住了SysRq
键,这个时候输入的一切都会直接由 Linux 内核来处理,它可以进行许多低级操作。
这个时候 reisub 中的每一个字母都是一个独立操作,分别表示:
r : unRaw 将键盘控制从 X Server 那里抢回来e : tErminate 给所有进程发送 SIGTERM 信号,让它们自己解决善后i : kIll 给所有进程发送 SIGKILL 信号,强制他们马上关闭s : Sync 将所有数据同步至磁盘u : Unmount 将所有分区挂载为只读模式b : reBoot 重启
操作步骤(亲测)
究竟该怎么按这些按钮才会有效?
首先,你的系统要支持这个功能,查看和开启的方法大家应该很熟悉了,网上也有很多说明,而且最幸运的是:Ubuntu 默认已经开启了这个功能。
接下来就是操作:马上你就会发现,同时按下
- 伸出你的左手,
同时按住 <Ctrl>+<Alt>
键,别松开 - 右手先按一下
<SysRq>
,左手别松开,等1秒 - 右手按一下
R ,左手别松开,等1秒 - 右手按一下
E ,左手别松开。这时包括桌面在内,所有程序都会终止,你会看到一个黑乎乎的屏幕,稍微等一段时间 - 右手依次按下
I,S,U,B ,左手别松开。每按一次都等那么几秒种,你会发现每按一次,屏幕上信息都会有所变化。最后按下B时,屏幕显示reset,这时你的左手可以松开了,等几秒钟,计算机就会安全重启。
Disable IPv6
Use Sysctl
1 | sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1 |
However, this only temporarily disables IPv6. The next time your system boots, IPv6 will be enabled again.
One method to make this option persist is modifying /etc/sysctl.conf
.
1 | :~$ cat >> /etc/sysctl.conf <<EOF |
Disable IPv6 using GRUB
An alternative method is to configure GRUB to pass kernel parameters at boot time. You’ll have to edit /etc/default/grub
. Once again, make sure you have administrator privileges:
1 | :~$ grep GRUB_CMDLINE_LINUX /etc/default/grub |
add aliases when using sudo
1 | :~$ alias lah='ls -lah' |
Add the following line to ~/.bashrc
:
1 | alias sudo='sudo ' |
From the bash manual:
Aliases allow a string to be substituted for a word when it is used as the first word of a simple command. The shell maintains a list of aliases that may be set and unset with the alias and unalias builtin commands.
**The first word of each simple command, if unquoted, is checked to see if it has an alias. **If so, that word is replaced by the text of the alias. The characters ‘/’, ‘$’, ‘`’, ‘=’ and any of the shell metacharacters or quoting characters listed above may not appear in an alias name. The replacement text may contain any valid shell input, including shell metacharacters. The first word of the replacement text is tested for aliases, but a word that is identical to an alias being expanded is not expanded a second time. This means that one may alias ls to “ls -F”, for instance, and Bash does not try to recursively expand the replacement text. **If the last character of the alias value is a space or tab character, then the next command word following the alias is also checked for alias expansion. **
Bash only checks the first word of a command for an alias, any words after that are not checked. That means in a command like sudo ll
, only the first word (sudo
) is checked by bash for an alias, ll
is ignored. We can tell bash to check the next word after the alias (i.e sudo
) by adding a space to the end of the alias value.