软件分类:
开源: 把软件程序与源代码文件一起打包提供给用户,让用户在不受限制地使用某个软件功能的基础上还可以按需进行修改,或编制成衍生产品再发布出去。用户具有使用自由、修改自由、重新发布自由以及创建衍生品的自由。开源软件最重要的特性有下面这些。
世界上的开源许可证,大概有上百种,常用的有 6 个,下面一图读懂主要的开源协议:
示例:
str = "www.magedu.com" // 用户空间
x = x + 100 // 用户空间
file.write(str) // 切换到内核空间
y = x + 200 // 切换回用户空间
第一行和第二行都是简单的赋值运算,在 User space 执行。第三行需要写入文件,就要切换到 Kernel space ,因为用户不能直接写文件,必须通过内核安排。第四行又是赋值运算,就切换回 User space 。
查看内核 (kernel) 版本命令:uname -r
或 cat /proc/version
linux 内核版本有两种:稳定版(次版本为偶数)和 开发版(次版本为奇数)。
版本号:[主版本].[次版本].[释出版本]-[修改版本]
如:3.10.0-957.el7.x86_64
注:
主版本、次版本:一般用头两个数字描述内核系列,主版本号和次版本号标志着重要的功能变动
释出版本:在主次版本架构不变的情况下,新增的功能累积到一定程度后释出的内核版本
修改版本:表示较小的功能变更,修改一些 bug 等
el 表示 Enterprise Linux,7 表示 Centos7
x86_64 表示 CPU 结构,即 64 位
Linux 内核版本发布网站(The Linux Kernel Archives):https://www.kernel.org/
查看 RedHat 系列发行(distribution)版本命令:cat /etc/redhat-release
Linux 发行版的名称和版本号是由发行版的维护者决定的
主要的 Linux 发行版如下:
Linux 操作系统的开机过程是这样的,即从 BIOS 开始,然后进入 Boot Loader,再加载系统内核,然后内核进行初始化,最后启动初始化进程。初始化进程作为 Linux 系统的第一个进程,它需要完成 Linux 系统中相关的初始化工作,为用户提供合适的工作环境。红帽 RHEL 7 系统已经替换掉了熟悉的初始化进程服务 System V init,正式采用全新的 systemd 初始化进程服务。systemd 初始化进程服务采用了并发启动机制,开机速度得到了不小的提升。
systemd 与 System V init 的区别以及作用
System V init 运行级别 | systemd 目标名称 | 作用 |
---|---|---|
0 | runlevel0.target, poweroff.target | 关机 |
1 | runlevel1.target, rescue.target | 单用户模式 |
2 | runlevel2.target, multi-user.target | 等同于级别 3 |
3 | runlevel3.target, multi-user.target | 多用户的文本界面 |
4 | runlevel4.target, multi-user.target | 等同于级别 3 |
5 | runlevel5.target, graphical.target | 多用户的图形界面 |
6 | runlevel6.target, reboot.target | 重启 |
emergency | emergency.target | 紧急 Shell |
如果想要将系统默认的运行目标修改为 “多用户,无图形” 模式,可直接用 ln 命令把多用户模式目标文件连接到 /etc/systemd/system/default.target:
ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
更多 Systemd 相关知识请参见 Systemd 入门教程:命令篇 - 阮一峰的网络日志
init 命令是 Linux 下的进程初始化工具,init 进程是所有 Linux 进程的父进程,它的进程号为 1。init 命令是 Linux 操作系统中不可缺少的程序之一,init 进程是 Linux 内核引导运行的,是系统中的第一个进程。
使用 init 命令很简单。直接输入 init + 你想要的模式
回车就行。
比如输入:
init 0 # 就是关机
init 3 # 就是切换到多用户 - 命令行模式
init 5 # 就是切换到图形化界面
init 6 # 就是重启
到底什么是运行级呢?简单的说,运行级就是操作系统当前正在运行的功能级别。这个级别从 0 到 6 ,具有不同的功能。你也可以用 cat /etc/inittab
查看它的英文介绍。
[root@localhost ~]#
# 管理员
[lxl@centos7 ~]$
$ 普通用户
echo $PS1
# [当前用户的账号名称@主机名的第一个名字 工作目录的最后一层目录名]命令提示符
PS1='[\u@\h \W]\$ '
# 不停闪烁的提示符样式
PS1="\[\e[1;5;41;33m\][\u@\h \W]\\$ \[\e[0m\]"
# 黄字红底([\e[31;40m]),依次显示24小时格式时间(\t)、当前用户的账号名称(\u)、主机的第一个名字(\h)、完整的当前工作目录名称(\w)
PS1="\[\e[1;2;41;33m\][\t \u@\h \w]\\$ \[\e[0m\]"
在 PS1 中设置的参数与含义对照表
参数 | 含义 |
---|---|
\d |
可显示出『星期 月 日』的日期格式,如:“Mon Feb 2” |
\H |
完整的主机名。 |
\h |
仅取主机名在第一个小数点之前的名字 |
\t |
显示时间,为 24 小时格式的『HH:MM:SS』 |
\T |
显示时间,为 12 小时格式的『HH:MM:SS』 |
\A |
显示时间,为 24 小时格式的『HH:MM』 |
\@ |
显示时间,为 12 小时格式的『am/pm』样式 |
\u |
目前使用者的账号名称,如『root』 |
\v |
BASH 的主版本信息 |
\w |
完整的工作目录名称,由根目录写起的目录名称,但家目录会以 ~ 取代 |
\W |
利用 basename 函数取得工作目录名称,所以仅会列出最后一个目录名 |
\! |
命令历史数 |
\# |
开机后命令历史数 |
\$ |
提示字符,如果是 root 时,提示字符为 # ,否则就是 $ |
在 PS1 中设置字符颜色的格式为:\e[F;Bm
,其中 “F” 为字体颜色,编号为 30-37,“B” 为背景颜色,编号为 40-47。可通过 \e[0m
关闭颜色输出;特别的,当B为1时,将显示加亮加粗的文字。
# 加亮加粗绿色字(\e[32;1m),依次显示24小时格式时间『HH:MM』(\A)、当前用户的账号名称(\u)、主机名(\h)、当前工作目录绝对路径(\w)
PS1="\[\e[32;1m\][\A \u@\h \w]\\$ \[\e[0m\]"
# 日期和时间用红色,账号@主机名用绿色,当前路径用黄色,在命令提示符处换行
PS1="[ \[\e[31;1m\]\d \t\[\e[0m\] \[\e[32;1m\]\u@\h\[\e[0m\] \[\e[33;1m\]\w\[\e[0m\] ] \[\e[32;1m\]\n\\$ \[\e[0m\]"
PS1='\e[32;1m[\A \u@\h \w]\$ \e[0m' # 若采用此种方式进行设置,则输入长命令时会出现不换行的故障,导致显示不正常
颜色对照表
F | B | 颜色 |
---|---|---|
30 | 40 | 黑色 |
31 | 41 | 红色 |
32 | 42 | 绿色 |
33 | 43 | 黄色 |
34 | 44 | 蓝色 |
35 | 45 | 紫红色 |
36 | 46 | 青蓝色 |
37 | 47 | 白色 |
这行配置可以写到 /etc/profile
下(写完记得 source /etc/profile
一下,让配置生效),也可以写到个人用户的环境变量配置文件中。
在shell中可执行的命令有两类:
help # 内部命令列表
enable CMD # 启用内部命令
enable –n CMD # 禁用内部命令
enable –n # 查看所有禁用的内部命令
which -a |--skip-alias ; whereis
快捷键 | 作用 |
---|---|
Ctrl + L | 清屏,相当于 clear 命令。 |
Ctrl + A | 光标移到命令行首,相当于 Home 键。 |
Ctrl + E | 光标移到命令行尾,相当于 End 键。 |
Ctrl + U | 从光标处删除⾄命令行首。 |
Ctrl + K | 从光标处删除⾄命令行尾。 |
Ctrl + C | 终止命令。 |
Ctrl + W | 从光标处删除至词首(往左删除,以空格分隔)。 |
Ctrl + Y | 粘贴 ctrl+U 或 ctrl+K 剪切的内容。 |
Ctrl + 左方向键 | 光标左移一个单词(以空格分隔)。 |
Ctrl + 右方向键 | 光标右移一个单词(以空格分隔)。 |
echo ${SHELL}
[root@CentOS7 ~]# echo ${SHELL}
/bin/bash
cat /etc/shells
[root@centos7 ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh
tpye COMMAND
[root@centos7 ~]# type man
man is /bin/man # 这是一个外部命令
[root@centos7 ~]# type cd
cd is a shell builtin # 这是一个内部命令
[root@centos7 ~]# type ls
ls is aliased to `ls --color=
` # 这是一个别名命令
whoami
[root@centos7 ~]# whoami
root
who
[root@centos7 ~]# who
lxl pts/0 2019-03-21 14:46 (192.168.20.1)
w
[root@centos7 ~]# w
20:53:48 up 6:08, 2 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
lxl pts/0 192.168.20.1 14:46 4.00s 0.41s 0.29s sshd: lxl [priv]
id
[root@centos7 ~]# id root
uid=0 (root) gid=0 (root) groups=0 (root)
stat FILENAME
[root@centos7 ~]# stat anaconda-ks.cfg
File: ‘anaconda-ks.cfg’
Size: 1959 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 201326658 Links: 1
Access: (0600/-rw-------) Uid: (0/ root) Gid: (0/ root)
Context: system_u:object_r:admin_home_t:s0
Access: 2019-03-19 00:58:06.037999203 +0800
Modify: 2019-03-19 00:56:19.553934247 +0800
Change: 2019-03-19 00:56:19.553934247 +0800
Birth: -
screen
screen –S [SESSION]
screen –x [SESSION]
exit
Ctrl+A+D
screen -ls
screen -r [SESSION]
hexdump
命令一般用来查看“二进制”文件的十六进制编码,但实际上它能查看任何文件,而不只限于二进制文件。
sz
和 rz
命令
rz
,sz
是 Linux/Unix 同 Windows 进行 ZModem 文件传输的命令行工具,对传输的数据会进行核查,并且有很好的传输性能。使用起来更是非常方便,但前提是 Windows 端需要支持 ZModem 的 telnet/ssh 客户端(比如 SecureCRT、Xshell 等)。注意:该方法的传输速度比较慢,推荐用于中小文件的传输,如配置文件等。
sz
:将 Linux/Unix 中选定的文件发送(send)到本地 Windows 机器:# 发送文件 filename1 filename2 … 至本地机器
sz filename1 filename2 …
rz
:客户端会弹出一个文件选择窗口,从本地 windows 选择(可多选)好文件后上传到服务器 (receive)# 以二进制文件接收覆盖,强制发送方转义所有控制字符
rz –be
获取帮助的能力决定了技术的能力!可从以下几个方面获取多层次的帮助:
whatis
COMMAND --help
man
和 info
/usr/share/doc/