1.adduser 和 useradd 的区别是什么
useradd 只创建用户,不会创建用户密码和工作目录,创建完了需要使用 passwd 去设置新用户的密码。
adduser 在创建用户的同时,会创建工作目录和密码(提示你设置),做这一系列的操作。
其实 useradd、userdel 这类操作更像是一种命令,执行完了就返回。而 adduser 更像是一种程序,需要你输入、确定等一系列操作
2.
3. 磁盘管理—— df VS du
3.1 df
3.2 du
计算出单个文件或者文件夹的磁盘空间占用
- -a或–all:包含全部的文件系统;
- –block-size=<区块大小>:以指定的区块大小来显示区块数目;
- -h或–human-readable:以可读性较高的方式来显示信息;
- -H或–si:与-h参数相同,但在计算时是以1000 Bytes为换算单位而非1024 Bytes;
- -i或–inodes:显示inode的信息;
- -k或–kilobytes:指定区块大小为1024字节;
- -l或–local:仅显示本地端的文件系统;
- -m或–megabytes:指定区块大小为1048576字节;
- –no-sync:在取得磁盘使用信息前,不要执行sync指令,此为预设值;
- -P或–portability:使用POSIX的输出格式;
- –sync:在取得磁盘使用信息前,先执行sync指令;
- -t<文件系统类型>或–type=<文件系统类型>:仅显示指定文件系统类型的磁盘信息;
- -T或–print-type:显示文件系统的类型;
- -x<文件系统类型>或–exclude-type=<文件系统类型>:不要显示指定文件系统类型的磁盘信息;
- –help:显示帮助;
- –version:显示版本信息
4. 帮助命令
内建命令
实际上是 shell 程序的一部分,其中包含的是一些比较简单的 Linux 系统命令,这些命令是写在 bash 源码的 builtins 里面的,由 shell 程序识别并在 shell 程序内部完成运行,通常在 Linux 系统加载运行时 shell 就被加载并驻留在系统内存中。而且解析内部命令 shell 不需要创建子进程,因此其执行速度比外部命令快。比如:history、cd、exit 等等。
外部命令
是 Linux 系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以其包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调入内存。虽然其不包含在 shell 中,但是其命令执行过程是由 shell 程序控制的。外部命令是在 Bash 之外额外安装的,通常放在/bin,/usr/bin,/sbin,/usr/sbin 等等。比如:ls、vi 等。
可以使用 type
命令来区分内建命令和外部命令。
4.1 help命令
4.2 --help参数
4.3 man命令
得到的内容比用 help 更多更详细,而且 man 没有内建与外部命令的区分,因为 man 工具是显示系统手册页中的内容,也就是一本电子版的字典,这些内容大多数都是对命令的解释信息,还有一些相关的描述。通过查看系统文档中的 man 也可以得到程序的更多相关信息和 Linux 的更多特性。
4.4 info 命令
要是你觉得 man 显示的信息都还不够,满足不了你的需求,那试试 info 命令,注意实验楼的环境中没有安装 info,可以手动安装,安装和操作步骤如下:
sudo apt-get update
sudo apt-get install info
- 得到的信息是不是比 man 还要多了,info 来自自由软件基金会的 GNU 项目,是 GNU 的超文本帮助系统,能够更完整的显示出 GNU 信息。所以得到的信息当然更多
- man 和 info 就像两个集合,它们有一个交集部分,但与 man 相比,info 工具可显示更完整的 GNU 工具信息。若 man 页包含的某个工具的概要信息在 info 中也有介绍,那么 man 页中会有“请参考 info 页更详细内容”的字样。
5. 计划工具
5.1 crontab命令
crontab 命令
常见于 Unix 和类 Unix 的操作系统之中(Linux 就属于类 Unix 操作系统),用于设置周期性被执行的指令。
- 我们时常会有一些定期定时的任务,如周期性的清理一下 /tmp,周期性的去备份一次数据库,周期性的分析日志等等。
crontab 命令
从输入设备读取指令,并将其存放于 crontab 文件中,以供之后读取和执行。通常,crontab 储存的指令被守护进程激活,crond
为其守护进程,crond 常常在后台运行,每一分钟会检查一次是否有预定的作业需要执行。
6. 管道
管道
是一种通信机制,通常用于进程间的通信(也可通过 socket 进行网络通信),它表现出来的形式就是将前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin).
- 管道又分为匿名管道和具名管道(这里将不会讨论在源程序中使用系统调用创建并使用管道的情况,它与命令行的管道在内核中实际都是采用相同的机制)。
- 我们在使用一些过滤程序时经常会用到的就是
匿名管道
,在命令行中由| 分隔符
表示,|
在前面的内容中我们已经多次使用到了。 具名管道
简单的说就是有名字的管道,通常只会在源程序中用到具名管道。