zza@zza:~/表示用户zza在主机zza上
虚拟机
1.虚拟机网络配置
在虚拟机设置中的网络适配器中有三个选项:桥接模式,NAT模式和Host-only(仅主机)模式。
-
-
NAT模式:通过VMnet8这块假网卡跟你的真实计算机通信,跟局域网内其它计算机就不能通信。不用占用真实网段ip地址。如果本机可以访问互联网,那么虚拟机也可以访问互联网。
-
Host-only(仅主机)模式:通过VMnet1这块假网卡跟你的真实计算机通信,跟局域网内其它计算机就不能通信。不用占用真实网段ip地址。只能和本机通信。
Linux中可以使用ifconfig
命令查看ip地址。设置Linux的ip地址:ifconfig eth0 192.168.1.156
,更改之后只是临时生效,重启电脑之后,ip地址是会丢失的。要永久改变ip地址,需要改变配置文件中的ip设置。
Windows中可以使用ipconfig
命令查看ip地址。
2.SecureCRT远程连接管理工具
SecureCRT:远程连接管理工具
SecureFX:文件传输工具
Winscp:文件传输工具
使用df
命令(英文全拼:disk free) 用于显示目前在 Linux 系统上的文件系统磁盘使用情况统计。
-h选项,通过它可以产生可读格式的df命令的输出:
注意事项:
Linux是严格区分大小写的。
Linux中所有内容以文件形式保存,包括硬件:
硬盘文件是/dev/sd[a-p]
光盘文件是/dev/sr0
Linux不靠扩展名区分文件类型
压缩包:*.gz、*.bz2、*.tar.bz2、*.tgz等
二进制软件包:.rmp
网页文件:*.html、*.php
脚本文件:*.sh
配置文件:*.conf
这些扩展名只是为了帮助管理员直观的管理系统,知道这个是什么文件,管理员就知道用什么命令,而不用一个一个去试。即使没有这些扩展名,系统也知道这些文件是什么文件类型!
Linux所有的存储设备都必须挂载之后用户才能使用,包括硬盘、U盘和光盘。
4 Linux常用命令
命令格式
命令格式:命令 [-选项] [-参数]
例:ls -la /etc
说明:1. 个别命令使用不遵循此格式
2.当有多个选项时,可以写在一起
3.简化选项等于完整选项
4.1 文件处理命令
目录处理命令:ls
命令名称:ls,list
功能描述:显示目录文件
命令所在路径:/bin/ls
执行权限:所有用户
语法:ls 选项[-ald] [文件或目录]
-a 等于 --all:显示所有文件,包括隐藏文件
-l 等于 --long(长格式):显示详细信息
-h 等于 -human:以人性化方式显示信息
-d 等于 -directory:查看指定目录的详细信息(属性)
-i 等于 inode(i节点):查看文件的i节点
使用-l显示详细信息:
-rw-r--r--. 1 root root 138 Oct 14 00:08 sos.conf
drwxr-xr-x. 2 root root 225 Apr 1 17:34 ssh
-rw-r--r--
文件类型(-:二进制文件;d:目录;l:软链接文件)
rw- r-- r-- r读,w写,x执行
u g o u所有者,g所属组,o其他人
目录处理命令:mkdir
命令名称:mkdir,make directories
功能描述:创建新目录
命令所在路径:/bin/mkdir
执行权限:所有用户
语法:mkdir -p [目录名]
-p :递归创建,在一个不存在的目录下再创建一个子目录。/tmp是存在的,而/code是不存在的,要在不存在的/code 目录下再创建/c和/java就要使用-p。
mkdir -p /tmp/code/c /tmp/code/java
目录处理命令:mkdir
命令名称:cd,change directory
功能描述:切换目录
命令所在路径:shell内置命令
执行权限:所有用户
语法:cd [目录]
cd /tmp/code/c
切换到指定目录
cd ..
回到上级目录
目录处理命令:pwd
命令名称:pwd,print working directory
功能描述:显示当前目录
命令所在路径:/bin/pwd
执行权限:所有用户
语法:pwd
文件处理命令:rmdir
命令名称:rmdir,remove empty directories
功能描述:删除空目录
命令所在路径:/bin/rmdir
执行权限:所有用户
语法:rmdir [目录名]
rmdir /tmp/code/c
目录处理命令:cp
命令名称:cp,copy
功能描述:复制文件或目录
命令所在路径:/bin/cp
执行权限:所有用户
语法:cp -rp [原文件或目录] [目标目录]
-r :复制目录
-p :保留文件属性
还可以复制多个文件或目录,只要最后写上目标目录即可:
cp -rp /code/c /code/java /home
还可以再复制的时候更改文件名:
cp -r /code/c /home/php
目录处理命令:mv
命令名称:mv,move
功能描述:剪切文件、改名
命令所在路径:/bin/mv
执行权限:所有用户
语法:mv [原文件或目录] [目标目录]
也是可以剪切多个文件或目录
目录处理命令:rm
命令名称:rm,remove
功能描述:删除文件
命令所在路径:/bin/rm
执行权限:所有用户
语法:mv -rf [文件或目录]
-r :删除目录
-f 等于 force:强制执行
文件处理命令:touch
命令名称:touch
功能描述:创建空文件
命令所在路径:/bin/touch
执行权限:所有用户
语法:touch [文件名]
文件处理命令:cat
命令名称:cat
功能描述:显示文件内容
命令所在路径:/bin/cat
执行权限:所有用户
语法:cat [文件名]
-n :显示行号
cat -n /etc/issue
文件处理命令:tac
命令名称:tac
功能描述:显示文件内容(反向列示)
命令所在路径:/usr/bin/tac
执行权限:所有用户
语法:tac [文件名]
tac /etc/issue
文件处理命令:more
命令名称:more
功能描述:分页显示文件内容
命令所在路径:/bin/more
执行权限:所有用户
语法:more [文件名]
(空格)或f :翻页
(Enter) :换行
q或Q :退出
more /etc/services
文件处理命令:less
命令名称:less
功能描述:分页显示文件内容
(可上下翻页(行),可输入 / 进行查找,按n(next)查找下一个)
命令所在路径:/usr/bin/less
执行权限:所有用户
语法:less [文件名]
文件处理命令:head
命令名称:head
功能描述:显示文件前面几行
命令所在路径:/usr/bin/head
执行权限:所有用户
语法:head [文件名]
-n :指定行数,不写n的话默认前10行
head -n 20 /etc/services
文件处理命令:tail
命令名称:tail
功能描述:显示文件后面几行
命令所在路径:/usr/bin/tail
执行权限:所有用户
语法:tail [文件名]
-n :指定行数,不写n的话默认前10行
-f :动态显示文件末尾内容,可用于监控日志
tail -n 20 /etc/services
文件处理命令:ln
命令名称:ln,link
功能描述:生成链接文件
命令所在路径:/bin/ln
执行权限:所有用户
语法:ln -s [原文件] [目标文件]
-s :创建软链接
创建文件/etc/issue的软链接/tmp/issue.soft
ln -s /etc/issue /tmp/issue.soft
创建文件/etc/issue的硬连接/tmp/issue.hard
ln /etc/issue /tmp/issue.hard
软链接特征:类似Windows快捷方式
-
lrwxrwxrwx
l:软链接
所有者、所属组、其他人都可以读写执行
但是这个文件的权限不决定源文件的权限,最终的文件权限取决于源文件的权限。
-
文件大小(很小)-只是符号链接
-
/tmp/issue.soft -> /etc/issue 箭头指向源文件
硬链接特征:
-
拷贝cp -p + 同步更新
echo "www.baidu.com" >> /etc/issue
-
通过i节点识别
硬连接和源文件的i节点是一样的;而软链接则不一样。可以用
ls -i
命令查看 -
不能跨分区,软链接可以
-
不能针对目录使用,软链接可以
4.2 权限管理命令
4.2.1 权限管理命令chmod(文件所有者和管理员root)
命令名称:chmod,change the permissions mode of a file
功能描述:改变文件或目录权限
命令路径:/bin/chmod
执行权限:所有用户
语法:chmod [{ugoa}{+-=}{rwx}] [文件或目录] [mode=421] [文件或目录]
-R 递归修改
赋予文件所有者执行权限:
chmod u+x test.conf
chmod g-r test.conf
chmod g=rwx,o-r test.conf
权限的数字表示:
r --- 4
w --- 2
x --- 1
rwxrw-r--
7 6 4
chmod 764 test.conf
文件目录权限总结
代表符号 权限 对文件的含义 对目录的含义 r 读权限 可以查看文件内容。cat/more/head/tail/less 可以列出目录中的内容。 ls w 写权限 可以修改文件内容。 vim 可以在目录中创建、删除文件。 touch/mkdir/rmdir/rm x 执行权限 可以执行文件。 script(脚本)/command(命令) 可以进入目录。 cd
添加一个普通用户
useradd 用户名
passwd 用户名
#输入密码
例如:
useradd wood
passwd wood
Newpassword:1234
Retype new password:1234
删除用户
userdel -r 用户名
4.2.2 其他权限管理命令
权限管理命令:chown(管理员root)
命令名称:chown,change file ownership
功能描述:改变文件或目录的所有者
命令路径:/bin/chown
执行权限:所有用户
语法:chown [用户] [文件或目录]
改变文件test的所有者为zza,要在管理员root用户下才可以修改。
chown zza test
权限管理命令:chgrp(管理员root)
命令名称:chgrp,change file group ownership
功能描述:改变文件或目录的所属组
命令路径:/bin/chgrp
执行权限:所有用户
语法:chgrp [用户] [文件或目录]
改变文件test的所属组为zza,要在管理员root用户下才可以修改。
chgrp zza test
权限管理命令:umask
命令名称:chgrp,the user file-creation mask
功能描述:显示、设置文件的缺省权限
命令路径:Shell内置命令
执行权限:所有用户
语法:umask [-S]
-S 以rwx形式显示新建文件缺省权限
umask -S
4.3 文件搜索命令
文件搜索命令:find
命令名称:find
功能描述:文件搜索
命令路径:/bin/find
执行权限:所有用户
语法:find [搜索范围] [匹配条件]
1. find /etc -name init
find /etc -name *init* :搜索包含init字母的所有文件,*是通配符,匹配任意字符
find /etc -name init??? :?匹配单个字符
在目录/etc中查找文件init
-iname 不区分大小写
2. find / -size +204800
在根目录下查找大于100MB的文件
+n 大于 -n 小于 n 等于
数据块是Linux中存储文件的最小单位,一个数据块是512字节(0.5K),而100MB=102400K=204800数据块。
3. find /home -user zza
在家目录下查找所有者为zza的文件
-group 根据所属组查找
4.find /etc -cmin -5
在/etc下查找5分钟内被修改过属性的文件和目录
-amin 访问时间 access
-cmin 文件属性 change
-mmin 文件内容 modify
5. find /etc -size +163840 -a -size -204800
在/etc下查找大于80MB小于100MB的文件
-a 两个条同时满足(and)
-o 两个条件满足任意一个即可(or)
6. find /etc -name inittab -exec ls -l {} ;
在/etc下查找inittab文件并显示其详细信息
-exec/-ok 命令 {}; 对搜索结果执行操作
-exec/-ok两个输入一个即可,-ok会询问
命令表示要执行的操作命令
{}表示find查找的结果,因为find查找的结果不一定只有一个
表示转义符
;表示结束符
7. find /etc -name init* -a -type f -exec ls -l {} ;
-type 根据文件类型查找
f 文件 d 目录 l 软链接文件
8. find . -inum 33683657 -exec rm {} ;
-inum 根据i节点查找(可用于查找硬链接)
其他文件搜索命令
文件搜索命令:locate
命令名称:locate
功能描述:在文件资料库中查找文件
命令路径:/usr/bin/locate
执行权限:所有用户
语法:locate 文件名
-i :不区分大小写
locate inittab
刚创建的文件可以用
updatedb
命令更新文件资料库,但是存放临时文件的目录并不在文件资料库的收录范围之内,所以locate是没有办法找到这个目录下的文件的。
文件搜索命令:which
命令名称:which
功能描述:搜索命令所在目录及别名信息
命令路径:/usr/bin/which
执行权限:所有用户
语法:which 命令
which ls
文件搜索命令:whereis
命令名称:whereis
功能描述:搜索命令所在目录及帮助文档路径
命令路径:/usr/bin/whereis
执行权限:所有用户
语法:whereis [命令名称]
whereis ls
文件搜索命令:grep
命令名称:grep
功能描述:在文件中搜索字串匹配的行并输出
命令路径:/bin/grep
执行权限:所有用户
语法:grep -iv [指定字串] [文件]
-i :不区分大小写
-v :排除指定字串
grep xdmcp /etc/services
4.4 帮助命令:man1:命令的帮助;man5:配置文件的帮助
帮助命令:man
命令名称:man,manual
功能描述:获得帮助信息
命令路径:/usr/bin/man
执行权限:所有用户
语法:man [命令或配置文件]
命令:这个命令是干什么用的、选项是干什么用的
配置文件:这个配置文件是干什么用的、配置文件的格式
man ls
查看ls命令的帮助信息
man services(不用写绝对路径,只需要配置文件名称即可)
查看配置文件services的帮助信息
帮助命令:whatis 命令(查看命令的简短信息),apropos 配置文件(查看配置文件的简短信息)
帮助命令:help
命令名称:help
功能描述:获得Shell内置命令的帮助信息
命令路径:Shell内置命令
执行权限:所有用户
语法:help 命令
help umask
查看umask命令的帮助信息
4.5 用户管理命令
用户管理命令:useradd
命令名称:useradd
功能描述:添加新用户
命令路径:/usr/sbin/useradd
执行权限:root
语法:useradd 用户名
useradd zza
用户管理命令:passwd
命令名称:passwd
功能描述:设置用户密码
命令路径:/usr/bin/passwd
执行权限:所有用户
语法:passwd 用户名
passwd zza
用户管理命令:who,tty:本地终端;pts:远程终端
命令名称:who
功能描述:查看登录用户信息
命令路径:/usr/bin/who
执行权限:所有用户
语法:who
4.6 压缩解压命令
压缩解压命令:gzip
命令名称:gzip,GNU zip
功能描述:压缩文件,只能压缩文件,不能压缩目录,且不保存源文件(即压缩后没有源文件)
命令路径:/bin/gzip
执行权限:所有用户
语法:gzip [文件]
压缩后文件格式:.gz
压缩解压命令:gunzip
命令名称:gzip,GNU unzip
功能描述:解压缩.gz的压缩文件
命令路径:/bin/gunzip
执行权限:所有用户
语法:gunzip [压缩文件] 或者 gzip -d [压缩文件]
gunzip test.gz
gzip -d test.gz
压缩解压命令:tar
命令名称:tar
功能描述:打包目录
命令路径:/bin/tar
执行权限:所有用户
语法:tar 选项[-zcf] [压缩后文件名] [目录]
-c :打包
-v :显示详细信息
-f :指定文件名
-z :打包同时压缩
压缩后文件格式:.tar.gz
tar命令解压缩语法:tar 选项[-zxvf] 压缩文件名
-x :解包
-v :显示详细信息
-f :指定解压文件
-z :解压缩
tar -zxvf test.tar.gz
压缩解压命令:zip,Windows和Linux都支持
命令名称:zip
功能描述:压缩文件或目录,可以保留源文件
命令路径:/usr/bin/zip
执行权限:所有用户
语法:zip 选项[-r] [压缩后文件名] [文件或目录]
-r :压缩目录
压缩后文件格式:.zip
test是文件:
zip test.zip test
abc是目录:
zip abc.zip abc
压缩解压命令:unzip,Windows和Linux都支持
命令名称:unzip
功能描述:解压.zip的压缩文件
命令路径:/usr/bin/unzip
执行权限:所有用户
语法:unzip [压缩文件]
unzip test.zip
压缩解压命令:bzip2
命令名称:bzip2
功能描述:压缩文件
命令路径:/usr/bin/bzip2
执行权限:所有用户
语法:bzip2 选项[-k] [文件]
-k :产生压缩文件后保留源文件
压缩后文件格式:.bz2
bzip2 -k test
tar -cjf abc.tar.bz2 abc(把gzip的z换成了j)
压缩解压命令:bunzip2
命令名称:bunzip2
功能描述:解压缩
命令路径:/usr/bin/bunzip2
执行权限:所有用户
语法:bunzip2 选项[-k] [压缩文件]
-k :解压缩后保留源文件
bunzip2 -k test.bz2
tar -xjf abc.tar.bz2
4.7网络命令
网络命令:write
命令名称:write
功能描述:给在线用户发信息,回车,然后以Ctrl+D保存结束
命令路径:/usr/bin/write
执行权限:所有用户
语法:write <用户名>
write zza
网络命令:wall
命令名称:wall,write all
功能描述:发广播信息
命令路径:/usr/bin/wall
执行权限:所有用户
语法:wall [message]
wall you are my friend!
网络命令:ping
命令名称:ping
功能描述:测试网络连通性
命令路径:/bin/ping
执行权限:所有用户
语法:ping 选项 IP地址
-c 指定发送次数
ping 192.168.42.2
网络命令:ifconfig
命令名称:ifconfig,interface configure
功能描述:查看和设置网卡信息
命令路径:/sbin/ifconfig
执行权限:root
语法:ifconfig 网卡名称 IP地址
ifconfig ens33 192.168.42.2
网络命令:mail
命令名称:mail
功能描述:查看发送电子邮件
命令路径:/bin/mail
执行权限:所有用户
语法:mail [用户名]
mail root
直接输入mail查看邮件
h :回看邮件
d 序号 :删除邮件
q :退出
网络命令:last
命令名称:last
功能描述:列出目前与过去登入系统的用户信息
命令路径:/usr/bin/last
执行权限:所有用户
语法:last
网络命令:lastlog
命令名称:lastlog
功能描述:检查某特定用户上次登录的时间
命令路径:/usr/bin/lastlog
执行权限:所有用户
语法:lastlog
lastlog -u zza表示只查看这个用户的信息
网络命令:traceroute
命令名称:traceroute
功能描述:显示数据包到主机间的路径
命令路径:/bin/traceroute
执行权限:所有用户
语法:traceroute
traceroute www.baidu.com
网络命令:netstat
命令名称:netstat
功能描述:显示网络相关信息
命令路径:/bin/netstat
执行权限:所有用户
语法:netstat [选项]
选项:
-t :TCP协议
-u :UDP协议
-l :监听
-r :路由
-n :显示IP地址和端口号
netstat -tlun 查看本机监听的端口
netstat -an 查看本机所有的网络连接
netstat -rn 查看本机路由表
网络命令:setup
命令名称:setup
功能描述:配置网络
命令路径:/usr/bin/setup
执行权限:root
语法:setup
挂载命令:mount
命令名称:mount
功能描述:
命令路径:/bin/mount
执行权限:root
语法:mount [-t 文件系统] 设备文件名 挂载点
mount -t iso9660 /dev/sr0 /mnt/cdrom
卸载语法:
umount 设备文件名或者挂载点
umount /dev/sr0
umount /mnt/cdrom
4.8关机重启命令
关机重启命令:shutdown
shutdown [选项] 时间
选项:
-c :取消前一个关机命令
-h :关机
-r :重启
runlevel
:查询系统运行级别
logout
:退出登录命令
5 文本编辑器Vim
5.1 Vim的常用操作
在命令模式下输入:set number(或者set nu)就可以显示行号!
插入命令
命令 | 作用 |
---|---|
a | 在光标所在字符后插入 |
A | 在光标所在行行尾插入 |
i | 在光标所在字符前插入 |
I | 在光标所在行行首插入 |
o | 在光标下插入新行 |
O | 在光标上插入新行 |
定位命令
命令 | 作用 |
---|---|
:set nu | 设置行号 |
:set nonu | 取消行号 |
gg | 到第一行 |
G | 到最后一行 |
nG | 到第n行 |
:n | 到第n行 |
$ | 移至行尾 |
0 | 移至行首 |
删除命令
命令 | 作用 |
---|---|
x | 删除光标所在处字符 |
nx | 删除光标所在处后n个字符 |
dd | 删除光标所在行,ndd删除n行 |
dG | 删除光标所在行到文件末尾内容 |
D | 删除光标所在处到行尾内容 |
:n1,n2d | 删除指定范围的行 |
复制和剪切命令
命令 | 作用 |
---|---|
yy | 复制当前行 |
nyy | 复制当前行以下n行 |
dd | 剪切当前行 |
ndd | 剪切当前行以下n行 |
p、P | 粘贴在当前光标所在行下或行上 |
替换和取消命令
命令 | 作用 |
---|---|
r | 取代光标所在处字符 |
R | 从光标所在处开始替换字符,按Esc键结束 |
u | 取消上一步操作 |
搜索和搜索替换
命令 | 作用 |
---|---|
/string | 搜索指定字符串,搜索时忽略大小写:set ic |
n | 搜索指定字符串的下一个出现位置(next) |
:%s/old/new/g | :替换范围;%s全文替换指定字符串,g不询问,c询问 |
:n1,n2s/old/new/g | 在一定范围内替换指定字符串,g不询问,c询问 |
保存和退出命令
命令 | 作用 |
---|---|
:w | 保存修改 |
:w new_filename | 另存为指定文件 |
:wq | 保存修改并退出 |
ZZ | 快捷键,保存修改并退出 |
:q! | 不保存修改退出 |
:wq! | 保存修改并退出(文件所有者及root可使用) |
5.2 Vim使用技巧
导入文件内容 :r 文件名
不退出Vim查询一个命令的路径 :!which 命令
导入命令执行结果 :r !命令
范例:导入脚本完成时间 :r !date 这个命令会将当前时间导入
定义快捷键 :map 快捷键 触发命令
范例:
插入注释符号#的快捷键:
:map ^P I#<ESC>
解释:按Ctrl+v+p会显示有颜色的^P;I:跳到行首并插入;#:要插入的是#;按<ESC>键退出编辑模式,进入命令模式。
删除注释符号#的快捷键:
:map ^B 0x
解释:按Ctrl+v+b会显示有颜色的^B;0:跳到行首;x:把行首光标所在处的第一个字符删掉。
插入邮箱:
:map ^H I1012@qq.com<ESC>
连续行注释 :n1,n2s/^/#/g
表示一定范围的行加上注释符号#,^表示行首
:n1,n2s/^#//g
表示删除行首的注释符号#,替换为空
:n1,n2s/^////g
表示行首插入//
替换 :ab mymail samlee@lampbrother.net
表示在插入模式下将输入的mymail字符替换成邮箱
如果想要永久生效就需要把命令写到每个用户的家目录下的配置文件.vimrc
里面
6 软件包管理
6.1 软件包管理简介
-
软件包分类
1、源码包
2、二进制包(centOS:RPM包,Ubuntu:deb包、系统默认包):源代码经过编译后的包
7 用户和用户组管理
7.1.1 用户配置文件-用户信息文件-/etc/passwd
1、/etc/passwd
第1字段:用户名称
第2字段:密码标志,表示这个用户是有密码的,但是需要去shadow文件里面去查找。
第3字段:UID(用户ID)
0: 超级用户
1-499: 系统用户(伪用户)
500-65535: 普通用户
第4字段:GID(用户初始组ID)
第5字段:用户说明
第6字段:家目录
普通用户:/home/用户名/
超级用户:/root/
第7字段:登录之后的Shell
2、初始组和附加组
初始组:就是指用户一登录就立刻拥有这个用户组的相关权限,每个用户的初始组只能有一个,一般就是和这个用户的用户名相同的组名作为这个用户的初始组。
附加组:指用户可以加入多个其他的用户组,并拥有这些组的权限,附加组可以有多个。
3、Shell是什么
Shell就是Linux的命令解释器
在/etc/passwd当中,除了标准Shell是/bin/bash之外,还可以写如/sbin/nologin
7.1.1 用户配置文件-影子文件-/etc/shadow
1、/etc/shadow
第1字段:用户名
第2字段:加密密码
加密算法升级为SHA512散列加密算法
如果密码位是“!!”或“*”代表没有密码,不能登录
第3字段:密码最后一次修改日期
使用1970年1月1日作为标准时间,每过一天时间戳加1
第4字段:两次密码的修改间隔时间(和第3字段相比)
第5字段:密码有效期(和第3字段相比)
第6字段:密码修改到期前的警告天数(和第5字段相比)
第7字段:密码到期后的宽限天数(和第5字段相比)
0:代表密码过期后立即生效
-1:代表密码永远不会失效
第8字段:账号失效时间
要用时间戳表示
第9字段:保留
2、时间戳换算
把时间戳换算为日期
date -d "1970-01-01 16066 days"
把日期换算为时间戳
echo $(($(date --date="2014/01/06" +%s)/86400+1))
7.1.1 用户配置文件-组信息文件-/etc/group和组密码文件-/etc/gshadow
1、/etc/group
第1字段:组名
第2字段:组密码标志
第3字段:GID
第4字段:组中附加用户
第5字段:
第6字段:
1、/etc/gshadow
第1字段:组名
第2字段:组密码
第3字段:组管理员用户名
第4字段:组中附加用户
7.2 用户管理相关文件
1、用户的家目录
普通用户:/home/用户名/,所有者和所属组都是此用户;
超级用户:/root/,所有者和所属组都是root用户。
2、用户的邮箱
/var/spool/mail/用户名
3、用户模板目录
/etc/skel/
7.3.1 用户管理命令-用户添加命令useradd
1、useradd命令格式
useradd [选项] 用户名
选项:
-u UID: 手工指定用户的UID号
-d 家目录: 手工指定用户的家目录
-c 用户说明:手工指定用户的说明
-g 组名: 手工指定用户的初始组
-G 组名: 指定用户的附加组
-s shell: 手工指定用户的登录shell。默认是/bin/bash
2、添加默认用户
useradd wood
grep wood /etc/passwd
grep wood /etc/shadow
grep wood /etc/group
grep wood /etc/gshadow
ll -d /home/zza/
ll /var/spool/mail/zza
3、指定选项添加用户
useradd -u 666 -G root,bin -d /home/wood -c "test user" -s /bin/bash wood
4、用户默认值文件
/etc/default/useradd
GROUP=100 #默认用户组
HOME=/home #用户家目录
INACTIVE=-1 #密码过期宽限天数(shadow文件7字段)
EXPIRE= #密码失效时间(8)
SHELL=/bin/bash #默认shell
SKEL=/etc/skel #默认目录
CREATE_MAIL_SPOOL=yes #是否建立邮箱
/etc/login.defs
PASS_MAX_DAYS 99999 #密码有限期(5)
PASS_MIN_DAYS 0 #密码修改间隔(4)
PASS_MIN_LEN 5 #密码最小5位(PAM)
PASS_WARN_AGE 7 #密码到期警告(6)
UID_MIN 500 #最小和最大UID范围
GID_MAX 60000
ENCRYPT_METHOD SHA512 #加密模式
7.3.2 用户管理命令-修改用户密码passwd
1、passwd命令格式
passwd [选项] 用户名
选项:
-S:查询用户密码的密码状态。仅root用户可用
-l:暂时锁定用户。仅root用户可用
-u:解锁用户。仅root用户可用
--stdin:可以通过管道符输出的数据作为用户的密码
2、查看密码状态-只能超级用户来查询,查询wood用户
passwd -S wood
wood PS 2021-04-12 0 99999 7 -1
用户名 密码 设定时间(2021-04-12) 密码修改间隔时间(0)密码有效期(99999) 警告时间(7) 密码不失效(-1)
3、锁定用户和解锁用户
passwd -l wood
passwd -u wood
4、使用字符串作为用户的密码
echo "123" | passwd --stdin wood
7.3.3 用户管理命令-修改用户信息usermod和修改用户密码状态chage
1、修改用户信息usermod
usermod [选项] 用户名
选项:
-u UID: 修改用户的UID号
-c 用户说明: 修改用户的说明信息
-G 组名: 修改用户的附加组
-L: 临时锁定用户(Lock)
-U: 解锁用户锁定(Unlock)
#修改用户的说明
usermod -c "test user" wood
#把wood用户加入root组
usermod -G root wood
#锁定用户
usermod -L wood
#解锁用户
usermod -U wood
2、修改用户密码状态chage
chage [选项] 用户名
选项:
-l: 列出用户的详细密码状态
-d 日期: 修改密码最后一次更改日期(shadow3字段)
-m 天数:两次密码修改间隔(4字段)
-M 天数:密码有效期(5字段)
-W 天数:密码过期前警告天数(6字段)
-I 天速:密码过期后宽限天数(7字段)
-E 日期:账号失效时间(8字段)
#这个命令其实是把密码修改日期归0了(shadow第3字段),这样用户一登录就要修改密码:主要用于创建大量普通用户的时候,会给一个初始密码,当用户第一次登录就必须重新设置密码,这样就保证了系统安全性。
chage -d 0 wood
7.3.4 用户管理命令-删除用户userdel和用户切换命令su
1、删除用户userdel
userdel [-r] 用户名
选项:
-r:删除用户的同时删除用户家目录
2、查看用户ID
id 用户名
3、用户切换命令su
su [选项] 用户名
选项:
-:选项只使用“-”代表连带用户的环境变量一起切换
-c:仅执行一次命令,而不切换用户身份
#切换成root
su - root
#不切换成root,但是执行useradd命令添加user1用户
su - root -c "useradd user1"
7.4用户组管理命令
1、添加用户组
groupadd [选项] 组名
选项:
-g GID:指定组ID
groupadd tg
2、修改用户组
groupmod [选项] 组名
选项:
-g GID:修改组ID
-n 新组名:修改组名
#把组名tg修改为testgroup
groupmod -n testgroup tg
3、删除用户组
groupdel 组名
groupdel testgroup
4、把用户添加入组或从组中删除
gpasswd 选项 组名
选项:
-a 用户名:把用户加入组
-d 用户名:把用户从组中删除
8 权限管理
8.4 权限管理-sudo权限
1、sudo权限
root把本来只能超级用户执行的命令赋予普通用户执行
sudo的操作对象是系统命令
2、sudo使用
visudo
#实际修改的是/etc/sudoers文件
root ALL=(ALL) ALL
#用户名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
#%wheel ALL=(ALL) ALL
#%组名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
3、授权wood用户可以重启服务器
visudo
wood ALL=/sbin/shutdown -r now
4、普通用户执行sudo赋予的命令
#切换成wood用户:
su - wood
#查看可用的sudo命令
sudo -l
#普通用户执行sudo赋予的命令
sudo /sbin/shutdown -r now
9 文件系统管理
9.1 回顾分区与文件系统
分区:
sd:代表SATA硬盘接口
hd:代表IDE硬盘接口
abcd:代表第几块硬盘
1234:代表主分区
5678:代表逻辑分区
Linux的文件系统:
ext2、ext3、ext4三种
9.2.1 文件系统常用命令-df、du、fsck、dumpe2fs
9.2.1.1 文件系统常用命令-df-文件系统查看命令
df [选项] [挂载点]
选项:
-a 显示所有的文件系统信息,包括特殊文件系统,如/proc、/sysfs
-h 使用习惯单位显示容量,如KB,MB和GB等
-T 显示文件系统类型
-m 以MB为单位显示容量
-k 以KB为单位显示容量。默认就是以KB为单位
9.2.1.2 文件系统常用命令-du-统计目录或文件大小
du [选项] [目录或文件名]
但是一般不用来看文件大小,因为
ls -lh
可以很清楚看出文件大小选项:
-a 显示每个子文件的磁盘占用量。默认只统计子目录的磁盘占用量
-h 使用习惯单位显示磁盘占用量,如KB,MB和GB等
-s 统计占用总量,而不列出子目录和子文件的占用量
du命令和df命令的区别
df命令是从文件系统考虑的,不光要考虑文件占用的空间,还要统计被命令或程序占用的空间(最常见的就是文件已经删除,但是程序并没有释放空间)
du命令是面向文件的,只会计算文件或目录占用的空间
9.2.1.3 文件系统常用命令-fsck-文件系统修复命令-开机后会自动进行检测,一般不需要用到
fsck [选项] 分区设备文件名
选项:
-a 不用显示用户提示,自动修复文件系统
-y 自动修复。和-a作用一致,不过有些文件系统只支持-y
9.2.1.4 文件系统常用命令-dumpe2fs-显示磁盘状态命令
dumpe2fs 分区设备文件名
9.2.2 文件系统常用命令-挂载命令
1、查询与自动挂载
查询系统中已经挂载的设备,-l会显示卷标名称
mount [-l]
依据配置文件/etc/fstab的内容,自动挂载
mount -a
2、挂载命令格式
mount [-t 文件系统] [-L 卷标名] [-o 特殊选项] 设备文件名 挂载点
选项:
-t 文件系统:加入文件系统类型来指定挂载的类型,可以ext3、ext4、iso9660等文件系统
-L 卷标名:挂载指定卷标的分区,而不是安装设备文件名挂载
-o 特殊选项:可以指定挂载的额外选项
9.2.3 文件系统常用命令-挂载光盘与U盘
1、挂载光盘
建立挂载点
mkdir /mnt/cdrom
挂载光盘
mount -t iso9660 /dev/cdrom /mnt/cdrom/
或者:cdrom和sr0是一样的,软链接而已。
mount /dev/sr0 /mnt/cdrom/
2、光盘卸载命令
umount 设备文件名或挂载点
umount /mnt/cdrom
3、挂载U盘
查看U盘设备文件名
fdisk -l
mount -t vfat /dev/sdb1 /mnt/usb/
注意:Linux默认是不支持NTFS文件系统的
4、U盘卸载命令
umount 设备文件名或挂载点
umount /dev/sdb1
9.3.1 fdisk分区-分区过程
这个分区每次重启都需要执行挂载命令才可以挂载,也就是说一重启分区就会丢,必须重新挂一遍,才能使用。
1、添加新硬盘
2、查看新硬盘
fdisk -l
3、使用fdisk命令分区
fdisk /dev/sdb
按n新建分区,创建一个主分区(按p),一个扩展分区(按e),再在扩展分区中创建一个逻辑分区(按l)。
fdisk交互指令说明 | |
---|---|
命令 | 说明 |
a | 设置可引导标记 |
b | 编辑bsd磁盘标签 |
c | 设置DOS操作系统兼容标记 |
d | 删除一个分区 |
l | 显示已知的文件系统类型。82为Linux swap分区,83为Linux分区 |
m | 显示帮助菜单 |
n | 新建分区 |
o | 建立空白DOS分区表 |
p | 显示分区列表 |
q | 不保存退出 |
s | 新建空白SUN磁盘标签 |
t | 改变一个分区的系统ID |
u | 记录显示记录单位 |
v | 验证区分表 |
w | 保存退出 |
x | 附加功能(仅专家) |
4、重新读取分区表信息
partprobe
5、格式化分区
在这里sdb2是扩展分区,唯一的作用就是在里面包含逻辑分区,它既不能格式化,也不能写入数据。
mkfs -t ext4 /dev/sdb1
mkfs -t ext4 /dev/sdb5
6、建立挂载点并挂载
mkdir /disk1
mount /dev/sdb1 /disk1/
mkdir /disk5
mount /dev/sdb5 /disk5/
使用mount命令或者df命令都可以看到挂载成功
9.3.2 fdisk分区-自动挂载与fstab文件修复
1、/etc/fstab文件
第一字段:分区设备文件名或UUID(硬盘通用唯一识别码)
第二字段:挂载点
第三字段:文件系统名称
第四字段:挂载参数
第五字段:指定分区是否被dump备份,0代表不备份,1代表每天备份,2代表不定期备份
第六字段:指定分区是否被fsck检测,0代表不检测,其他数字代表检测的优先级,那么当然1的优先级比2高
2、分区自动挂载
vi /etc/fstab
输入:
/dev/sdb1 /disk1 ext4 defaults 1 2
依据配置文件/etc/fstab的内容,自动挂载
mount -a
3、/etc/fstab文件修复
mount -o remount,rw /
10 Shell基础-Shell是Linux的命令解释器
10.2 脚本执行方式
echo输出命令
echo [选项] [输出内容]
选项:
-e:支持反斜线控制的字符转换
删除左侧字符:输出ac
echo -e "abc"
制表符与换行符
echo -e "a b c d e f"
输出颜色
echo -e "e[1;31m abcd e[0m"
30m=黑色,31m=红色,32m=绿色,33m=黄色
34m=蓝色,35m=洋红,36m=青色,37m=白色
第一个脚本
vi hello.sh
脚本执行
赋予执行权限,直接运行
chmod 755 hello.sh
./hello.sh
通过bash调用执行脚本
bash hello.sh
10.3 Bash基本功能
历史命令与补全
history [选项] [历史命令保存文件]
选项:
-c:清空历史命令
-w:把缓存中的历史命令写入历史命令保存文件
~./bash_history
历史命令默认会保存1000条,可以在环境变量配置文件
/etc/profile
中进行修改。
历史命令的调用:
使用上、下箭头调用以前的历史命令
使用“!n”重复执行第n条历史命令
使用"!!"重复执行上一条命令
使用“!字串”重复执行最后一条以该字串开头的命令
命令与文件补全
按“Tab”键就会自动进行补全。
别名与快捷键
命令别名
设定命令别名:临时生效
alias 别名=‘原命令’
查询命令别名:
alias
让别名永久生效:
vi /home/zza/.bashrc
删除别名:
unalias 别名
Bash常用快捷键
快捷键 | 作用 |
---|---|
ctrl+c | 强制终止当前的命令 |
ctrl+l | 清屏,相当于clear命令 |
ctrl+u | 删除或剪切光标之前的命令。 |
ctrl+y | 粘贴ctrl+u或ctrl+k剪切的内容 |
ctrl+r | 在历史命令中搜索,按下ctrl+r之后,就会出现搜索界面,只要输入搜索内容,就会从历史命令中搜索 |
ctrl+d | 退出当前终端 |
13 Linux系统管理
13.1 进程管理
进程管理:进程查看
查看系统中所有进程,使用BSD操作系统格式(Unix)
ps aux
a - 查看所有前台进程
x - 查看所有后台进程
u - 显示这个进程是由哪个用户产生的
查看系统中所有进程,使用Linux操作系统格式
ps -le
e - 显示所有进程
USER:该进程是由哪个用户产生的;
PID:进程的ID号;
%CPU:该进程占用CPU资源的百分比,占用越高,进程越耗费资源;
%MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源;
VSZ:该进程占用虚拟内存的大小,单位KB;
RSS:该进程占用实际物理内存的大小,单位KB;
TTY:该进程是在哪个终端中运行的。其中tty1-tty7代表本地控制台终端,tty1-tty6是本地的字符界面终端,tty7是图形终端。pts/0-255代表虚拟终端;
STAT:进程状态。常见的状态有:R:运行、S:睡眠、T:停止状态、s:包含子进程、+:位于后台;
START:该进程的启动时间;
TIME:该进程占用CPU的运算时间,注意不是系统时间;
COMMAND:产生此进程的命令名。
进程管理:查看系统健康状态
top [选项]
选项:
-d 秒数:指定top命令每隔几秒更新。默认是3秒
在top命令的交互模式当中可以执行的命令:
?或h:显示交互模式的帮助
P:以CPU使用率排序,默认就是此项
M:以内存的使用率排序
N:以PID排序
q:退出top
第一行信息为任务队列信息
内容 说明 12:26:46 系统当前时间 up 1 day, 13:32 系统的运行时间 2 users 当前登录了两个用户 load average: 0.00, 0.00, 0.00 系统在之前1分钟,5分钟,15分钟的平均负载。一般认为小于1时,负载较小。如果大于1,系统已经超出负载。 第二行为进程信息
内容 说明 Task: 95 total 系统中的进程总数 1 running 正在运行的进程数 94 sleeping 睡眠的进程 0 stopped 正在停止的进程 0 zombie 僵尸进程。如果不是0,需要手工检查僵尸进程 第三行为CPU信息
内容 说明 Cpu(s): 0.1%us 用户模式占用的CPU百分比 0.1%sy 系统模式占用的CPU百分比 0.0%ni 改变过优先级的用户进程占用的CPU百分比 99.7%id 空闲CPU的CPU百分比 0.1%wa 等待输入/输出的进程的占用的CPU百分比 0.0%hi 硬中断请求服务占用的CPU百分比 0.1%si 软中断请求服务占用的CPU百分比 0.0%st st(Steal time)虚拟时间百分比。就是当有虚拟机时,虚拟CPU等待实际CPU的时间百分比 第四行为物理内存信息
内容 说明 Mem: 625344k total 物理内存的总量,单位为KB 571504 used 已经使用的物理内存数量 53840k free 空闲的物理内存数量, 65800k buffers 作为缓冲的内存数量 第五行为交换分区(swap)信息
内容 说明 Swap: 524280k total 交换分区(虚拟内存)的总大小 0k used 已经使用的交换分区的大小 524280k free 空闲交换分区的大小 409280k cached 作为缓存的交换分区的大小
进程管理:查看进程树
pstree [选项]
选项:
-p:显示进程的PID
-u:显示进程的所属用户
13.2 终止进程
终止进程:kill命令
kill -l
查看可用的进程信号
信号代号 信号名称 说明 1 SIGHUP 该信号让进程立即关闭,然后重新读取配置文件之后重启 9 SIGKILL 用来立即结束程序的运行,本信号不能被阻塞、处理和忽略。一般用于强制终止进程。 15 SIGTERM 正常结束进程的信号,kill命令的默认信号。有时如果进程已经发生问题,这个信号是无法正常终止进程的,我们才会尝试SIGKILL信号,也就是信号9。
kill -1 进程ID号
重启进程
kill -9 进程ID号
强制杀死进程
终止进程:killall命令
killall [选项] [信号] 进程名
按照进程名杀死进程
选项:
-i:交互式,询问是否要杀死某个进程
-I:忽略进程名的大小写。
killall -9 httpd
终止进程:pkill命令
pkill [选项] [信号] 进程名
按照进程名终止进程
选项:
-t 终端号:按照终端号踢出用户
w
使用w命令查询本机已经登录的用户
pkill -t -9 pts/1
强制杀死从pts/1虚拟终端登录的进程