你不知道的Linux(持续更新中)
1.关于GNU、Linux、GNU/Linux三者的关系
GNU 项目创始于一九八四年,旨在开发一个类似 Unix ,且为自由软件的完整的操作系统: GNU 系统。(也可把GNU看成一个自由软件工程)
GNU 这个名字是“GNU's Not Unix”的递归首字母缩写词。它的发音为 g-noo,g和n之间没有元音,所以只有一个音节。
GNU 的内核尚未完成,所以 GNU 使用 Linux 作为其内核。(Linux其实只是一个内核,一个Linux kernel)GNU 和 Linux 以这样的方式组合成为 GNU/Linux 操作系统。
(这个组合经常被错误地称为 Linux。)
2. SUDO !!
如果你还不知道这个命令,我觉得你应该好好感谢我,因为如果你不知道的话,那每次你在输入长串命令后看到“permission denied”后一定会痛苦不堪。
- sudo !!
如何使用sudo !!?很简单。试想你刚输入了如下命令:
apt-get install ranger
一定会出现“Permission denied”,除非你已经登录了足够高权限的账户。
sudo !! 就会用 sudo 的形式运行上一条命令。所以上一条命令就变成了这样:
sudo apt-get install ranger
PS:sudo是superuser do的简写,sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。
这样不仅减少了root用户的登陆 和管理时间,同样也提高了安全性。
3. 暂停并在后台运行命令
我曾经写过一篇如何在终端后台运行命令的指南。
- CTRL + Z - 暂停应用程序
- fg - 重新将程序唤到前台
如何使用这个技巧呢?
试想你正用nano编辑一个文件:
sudo nano abc.txt
文件编辑到一半你意识到你需要马上在终端输入些命令,但是nano在前台运行让你不能输入。
你可能觉得唯一的方法就是保存文件,退出 nano,运行命令以后在重新打开nano。
其实你只要按CTRL + Z,前台的命令就会暂停,画面就切回到命令行了。然后你就能运行你想要运行命令,等命令运行完后在终端窗口输入“fg”就可以回到先前暂停的任务。
有一个尝试非常有趣就是用nano打开文件,输入一些东西然后暂停会话。再用nano打开另一个文件,输入一些什么后再暂停会话。如果你输入“fg”你将回到第二个用nano打开的文件。只有退出nano再输入“fg”,你才会回到第一个用nano打开的文件。
4. ‘在’特定的时间运行Linux命令
‘nohup’命令在你用SSH连接到服务器,并在上面保持执行SSH登出前任务的时候十分有用。
想一下如果你需要在特定的时间执行相同的命令,这种情况该怎么办呢?
命令‘at’就能妥善解决这一情况。以下是‘at’使用示例。
at 10:38 PM Fri
at> cowsay 'hello'
at> CTRL + D
上面的命令能在周五下午10时38分运行程序cowsay。
使用的语法就是‘at’后追加日期时间。当at>提示符出现后就可以输入你想在那个时间运行的命令了。
CTRL + D 返回终端。
还有许多日期和时间的格式,都需要你好好翻一翻‘at’的man手册来找到更多的使用方式。
5. Man手册
Man手册会为你列出命令和参数的使用大纲,教你如何使用她们。Man手册看起来沉闷呆板。(我思忖她们也不是被设计来娱乐我们的)。
不过这不代表你不能做些什么来使她们变得漂亮些。
export PAGER=most
你需要安装 ‘most’;她会使你的你的man手册的色彩更加绚丽。
你可以用以下命令给man手册设定指定的行长:
export MANWIDTH=80
最后,如果你有一个可用的浏览器,你可以使用-H在默认浏览器中打开任意的man页。
man -H <command>
注意啦,以上的命令只有在你将默认的浏览器设置到环境变量$BROWSER中了之后才效果哟。
5.关机和重启
关机命令:
1、 halt 立刻关机 2、poweroff 立刻关机 3、shutdown -h now 立刻关机(root用户使用) 4、shutdown -h 10 10分钟后自动关机 如果是通过shutdown命令设置关机的话,可以用shutdown -c命令取消重启 5.init 0 切换系统运行模式(run level为0时是关机模式)
重启命令:
1、reboot 2、shutdown -r now 立刻重启(root用户使用) 3、shutdown -r 10 过10分钟自动重启(root用户使用) 4、shutdown -r 20:35 在时间为20:35时候重启(root用户使用) 如果是通过shutdown命令设置重启的话,可以用shutdown -c命令取消重启
6. 取消关机
无论是在命令行还是图形用户界面关机后,才发现自己不是真的想要关机。
shutdown -c
需要注意的是,如果关机已经开始则有可能来不及停止关机。
以下是另一个可以尝试命令:
- pkill shutdown
7. 杀死挂起进程的简单方法
想象一下,你正在运行的应用程序不明原因的僵死了。
你可以使用‘ps -ef’来找到该进程后杀掉或者使用‘htop’。
有一个更快、更容易的命令叫做xkill。
简单的在终端中输入以下命令并在窗口中点击你想杀死的应用程序。
xkill
那如果整个系统挂掉了怎么办呢?
按住键盘上的‘alt’和‘sysrq’不放,然后慢慢输入以下键:
- REISUB
这样不按电源键你的计算机也能重启了。
8.du -sh和ls -l的区别
我们平常使用右键或者ls -l看到的文件大小都是指这个文件它本身内容的大小。比方说一个文本文件,里面写了ab,那么它二进制内容实际是61610a,也就是ab换行符,那么总 共占了3个byte。所以右键以及ll看到的结果应该是3。而用du结果是4K(因人而异),为什么会不同呢?
这是因为du=disk usage,它指这个文件放到磁盘中占了多少空间,当然3byte<4K,但是block是最小的单位,因此这个文件就占用了一个block,大小 也就是4K。有一种计算方法可以帮助理解,但是正确性我没有考证:假如文件是13K,1个block大小是4K,那么du结果是多少 呢?13/4=3.25,也就是该文件要占3个多block,因此磁盘占用就应该是4个block,du结果应该是4*4=16K。
从上面我们可以看到,du是计算文件占了多少个block,似乎du结果总应该大于等于文件内容的,也就是du结果总大于等于ll的,但也不尽然。如果你出现了du结果只有几K,但是右键一看文件竟然有好几M甚至上G,也不要惊讶,这是有可能的。
linux中有一种文件叫做sparse file,它可以延迟分配磁盘空间,特别适合虚拟机。比方说你为虚拟机分配了1G的虚拟磁盘空间,也就创建了一个1G的磁盘文件,但是如果你还没有打开虚 拟机使用这个文件,它实际上是没有任何内容的,也就是说没有产生磁盘占用。这个时候,ll结果将是1G,而du结果是0。sparse file使用了dd命令的seek参数,具体原理大家可以再查。这种情况被某些人称作文件的黑洞,很形象。
du有一个参数是 --apparent-size,效果与ll相同。