你不知道的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编辑一个文件:

  1. sudo nano abc.txt

文件编辑到一半你意识到你需要马上在终端输入些命令,但是nano在前台运行让你不能输入。

你可能觉得唯一的方法就是保存文件,退出 nano,运行命令以后在重新打开nano。

其实你只要按CTRL + Z,前台的命令就会暂停,画面就切回到命令行了。然后你就能运行你想要运行命令,等命令运行完后在终端窗口输入“fg”就可以回到先前暂停的任务

有一个尝试非常有趣就是用nano打开文件,输入一些东西然后暂停会话。再用nano打开另一个文件,输入一些什么后再暂停会话。如果你输入“fg”你将回到第二个用nano打开的文件。只有退出nano再输入“fg”,你才会回到第一个用nano打开的文件。

 

4. ‘在’特定的时间运行Linux命令

‘nohup’命令在你用SSH连接到服务器,并在上面保持执行SSH登出前任务的时候十分有用。

想一下如果你需要在特定的时间执行相同的命令,这种情况该怎么办呢?

命令‘at’就能妥善解决这一情况。以下是‘at’使用示例。

  1. at 10:38 PM Fri
  2. at> cowsay 'hello'
  3. at> CTRL + D

上面的命令能在周五下午10时38分运行程序cowsay。

使用的语法就是‘at’后追加日期时间。当at>提示符出现后就可以输入你想在那个时间运行的命令了。

CTRL + D 返回终端。

还有许多日期和时间的格式,都需要你好好翻一翻‘at’的man手册来找到更多的使用方式。

 

5. Man手册

Man手册会为你列出命令和参数的使用大纲,教你如何使用她们。Man手册看起来沉闷呆板。(我思忖她们也不是被设计来娱乐我们的)。

不过这不代表你不能做些什么来使她们变得漂亮些。

  1. export PAGER=most

你需要安装 ‘most’;她会使你的你的man手册的色彩更加绚丽。

你可以用以下命令给man手册设定指定的行长:

  1. export MANWIDTH=80

最后,如果你有一个可用的浏览器,你可以使用-H在默认浏览器中打开任意的man页。

  1. 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. 取消关机

无论是在命令行还是图形用户界面关机后,才发现自己不是真的想要关机。

  1. shutdown -c

需要注意的是,如果关机已经开始则有可能来不及停止关机。

以下是另一个可以尝试命令:

  • pkill shutdown

 

7. 杀死挂起进程的简单方法

想象一下,你正在运行的应用程序不明原因的僵死了。

你可以使用‘ps -ef’来找到该进程后杀掉或者使用‘htop’。

有一个更快、更容易的命令叫做xkill。

简单的在终端中输入以下命令并在窗口中点击你想杀死的应用程序。

  1. 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相同。

 

posted @ 2016-08-09 11:28  辞雀  阅读(556)  评论(0编辑  收藏  举报