Linux养成笔记
教程来自慕课网@Tony老师的课程
Linux简介
Linux发展史
Andrew S. Tanenbaum为了给学生讲课,买了一个Unix操作系统,参考他开发了Minix,并开放代码作为大学研究,2000正式开源,Linus Torvalds(大三大学生!),以Minix为模板,自己开发部分软件和功能,结合网上补丁,写了一个操作系统,对,Linux(1991年?怎么和上边的2000年有冲突?)。
服务器领域超过80%
内核版本和发行版本,内核官网:www.kernel.org
开源软件简介
开源:开放源代码
开源可以收费,如果用开源软件开发,可以拿去卖钱,但是应该把软件开源。(有点冲突吧?)
Linux应用领域
- 基于Linux的企业
www.netcraft.com:查看统计数据 - 嵌入式应用
安卓手机下载ssh软件,可以连接
(苹果手机系统底层是Unix)
Linux和Windows不同
- Linux严格区分大小写
- Linux中所有内容以文件形式保存,包括硬件(一切内容皆文件,用户也是文件)
- Linux不靠扩展名区分文件类型(靠权限区分)
安装CentOS
分区概念(针对MBR)
有一个比喻,硬盘是柜子,分区是不同的柜门。
- 主分区最多只能4个
- 扩展分区最多只能1个,主分区加扩展分区最多只能4个,扩展分区不能写入数据,只能包含逻辑分区
- 格式化,把分区分块,4kb一个,建立分区链表,格式化为了写入文件系统
- 分区号,1-4只能给主分区使用,逻辑分区从5开始,就算你只有2个主分区也从5开始
分区设备文件名
/dev/hda1
:IDE硬盘接口/dev/sda1
:SCSI硬盘接口、SATA硬盘接口
挂载
Linux不叫盘符,称挂载点
- 必须分区:
/
根分区,swap
交换分区(理解为虚拟内存),内存2倍(如果内存不超过4G)或者和内存一样大(内存大于4G)。(实验环境下不超过2GB就够了) - 推荐分区:
/boot
启动分区,200MB - 其他目录也可以单独占用一个分区
- 目录和分区关联起来叫做挂载
安装
-
1.进入BIOS设置光盘启动,装完以后要改回来。(虚拟机会自动识别是否有系统,没有则从光盘启动,故虚拟机可省略此步(亲测此条存在疑义,需设置BIOS,vm10))
“Install or upgrade an existing system”:安装或升级现有系统
“Install system with basic video driver”:安装过程采用基本的显卡驱动
“Rescue installed system”:进入系统修复模式
“Boot form local driver”:退出安装从硬盘启动
“Memory test”:存储介质检测 -
2.选择语言和地区
-
3.分区:自定义布局,创建boot、home、swap、”/“分区
-
4.选择Basic Server(基本服务器安装包)
安装日志
/root/install.log
:存储了安装在系统中的软件包和及其版本信息/root/install.log.syslog
:存储了安装过程中留下的事件记录/root/anaconda-ks.cfg
:以Kickstart配置文件的格式记录安装过程中配置的选项信息(重要的安装模板文件,可实现网络批量安装)
网络配置
- setup ->network ->eth0 ->ip(如果真实电脑为192.168.1.9,虚拟机中可设置192.168.1.100) ->子网掩码255.255.255.0 ->默认网关和真实电脑的一致(192.168.1.1) ->ONBOOT打*(这一步确定) ->dns和默认电脑的一致(192.168.1.1) ->保存退出
service network restart
:重启网络服务ping www.baidu.com -c 4
:ping一下百度或者什么网站(如果没有网络就ping自己得真实机)的试试看,ifconfig
可查看设置
以为上实验得出的结果,还不太懂得变通。
Linux常用命令
命令基本格式
[root@localhost ~]#
:
- root:当前登录用户
- localhost:主机名
- ~:当前所在目录(家目录,管理员为/root,普通用户为/home/user1)
- #:超级用户的提示符(普通用户的提示符$)
- 命令 [选项] [参数]:个别命令不遵守,多个选项可以卸载一起,有的选项可以使用简写
目录处理
-
ls [选项] [文件或目录]
:查询目录中内容,- -a 显示所有文件,包括隐藏文件(”.”开头的文件)
- -l 显示详细信息,数字1代表引用次数
ll
=ls -l
- -d 查看目录属性
- -h 人性化显示文件大小,所有统计大小命令支持该选项
- -i 显示inode
-
mkdir -p [目录名]
:递归建立目录- -p 递归创建
-
cd [目录]
:切换所在目录- ~ 当前用户的家目录
- - 上一次目录
- .. 上一级目录
- . 当前目录
-
pwd:显示当前目录(print working directory)
-
rmdir [目录名]
:删除空目录 -
rm -rf [文件或目录]
:删除文件或目录,没有回收站,删了就没了- -r 删除目录
- -f 强制,不指定会询问
cp [选项] [源文件或目录] [目标目录]
:复制
- -r 复制目录
- -p 连带文件属性复制
- -d 若源文件是链接文件,则复制链接属性
- -a 相当于 -pdr
-
mv [原文件或目录] [目标目录]
:剪切或改名(操作目录是不需要-r) -
ln -s [源文件] [目标文件]
:生成链接文件
- -s 创建软链接
硬链接:拥有相同的i节点和存储block块,可以看作是同一个文件,可通过i节点识别,不能跨分区,不能针对目录使用。(想象教室两个门,两个门都是进入这个教室)
软链接:类似Windows快捷方式,拥有自己的I节点和block块,但是数据块只保存原文件的文件名和i节点号,没有实际的文件数据,软链接文件权限都为lrwxrwxrwx,修改任意文件另一个都改变,删除原文件,软链接不能使用,软链接的数据块内容保存的是原文件的i节点信息
例子:a,ah,as,删除a,ah可以使用,as不能使用
要创建软链接,要么在同一个目录下操作,要么写明源文件的绝对路径,因为是在目标文件目录下找同名的
常见目录作用
- / 根目录
- /bin 命令保存目录(普通用户就可以读取的命令)
- /boot 启动目录,启动相关文件
- /dev 设备文件保存目录
- /etc 配置文件保存目录
- /home 普通用户的家目录
- /lib 系统库保存目录
- /mnt 系统挂载目录
- /media 挂载目录
- /root 超级用户的家目录
- /tmp 临时目录
- /sbin 命令保存目录(超级用户才能使用的目录)
- /proc 直接写入内存的,不能直接操作
- /sys 不能直接操作
- /var 系统相关文档内容
- /usr 系统软件资源目录
- /usr/bin 系统命令(普通用户)
- /usr/sbin 系统命令(超级用户)
Linux是一个严谨的系统,不应该随意保存文件
搜索命令
-
locate 文件名
:在后台数据库中按文件名搜索,搜索速度更快- /var/lib/mlocate:locate命令所搜索的后台数据库
- updatedb:更新数据库
- 例子:locate locate
- 缺点:只可以按照文件名搜索
- 注意:
/etc/updatedb.conf
文件中PRUNE_BIND_MOUNTS = "yes"
开启搜索限制,PRUNEFS =
搜索时不搜索的文件系统,PRUNENANMES =
搜索时不搜索的文件类型,PRUNEPATHS =
搜索时不搜索的路径,这里面有包含/tmp文件夹,也就是搜索会忽略这个文件夹。
-
whereis 命令名
:搜索命令所在路径及帮助文档所在位置(针对外来命令)- -b 只查找可执行文件
- -m 只查找帮助文件
-
which 文件名
:搜索命令所在路径及别名 -
find [搜索范围] [搜索条件]
:搜索文件- 例子:
find / -name install.log
,应避免大范围搜索,会非常耗系统资源,可使用通配符,是完全匹配,find / -name "install.log*"
- 通配符:* 匹配任意内容,? 匹配任意一个字符,[] 匹配中括号内的任意一个字符
- -i 不区分大小写
- -user 按照所有者查询
- -nouser 查找没有所有者的文件,可能是垃圾文件。内核产生的文件也可能没有所有者,也有可能是外来文件。
find /var/log/ -mtime +10
:查找10天前修改的文件
- -10 10天内
- 10 10天当天
- atime 文件访问时间
- ctime 改变文件属性
- mtime 改变文件内容
find . -size 25k
:查找当前目录(”.”)下文件大小是25kb的文件(默认单位是硬盘的扇区(固定是512字节?未考证))
- -25k 小于25kb的文件(小写的k,大写的M)
- 25k 等于25kb的文件
- +25k 大于25kb的文件
find . -inum 262422
:查找i节点是262422的文件find /etc -size +20k -a -size -50k
:查找/etc目录下,大于20kb并且小于50kb的文件
- -a and 逻辑与,两个条件都满足
- -o or 逻辑或,两个条件满足一个
find /etc -size +20k -a -size -50k -exec ls -lh {} \;
:查找/etc目录下,大于20kb并且小于50kb的文件,并显示详细信息
- -exec/-ok 命令 {} \; 搜索结果执行操作
- 例子:
grep [选项] 字符串 文件名
:在文件当中匹配符合条件的字符串
- -i 忽略大小写
- -v 排除指定字符串
- 正则表达式包含匹配
帮助命令
Linux中认为男人是无所不能的,所有用“man”作为帮助命令。
man 命令
:获取指定命令的帮助
man ls
:查看ls命令帮助,/-d
查找-d关键字,n
下一个匹配项,N
上一个匹配项
- man的级别
- 1:查看命令的帮助
- 2:查看可被内核调用的函数的帮助
- 3:查看函数和函数库的帮助
- 4:查看特殊文件的帮助(主要是/dev目录下的文件)
- 5:查看配置文件的帮助
- 6:查看游戏的帮助
- 7:查看其他杂项的帮助
- 8:查看系统管理员可用命令的帮助
- 9:查看和内核相关文件的帮助(有的没有这个级别)
man -f 命令
:查看命令拥有哪些级别的帮助,相当于whatis 命令
man 5 passwd
:查看passwd命令级别5的帮助(ps:有一个文件/etc/passwd)man 4 null
:Linux黑洞,在/dev/null,还有一个/dev/zeroman 8 ifconfig
:发现ifconfig只能root使用
man -k 命令
:查看和命令相关的所有帮助,相当于apropos
命令
apropos passwd
:不一定是命令,所有包含passwd关键字的命令相关的帮助
命令 --help
:获取命令选项的帮助help shell内部命令
:shell内部命令帮助
whereis cd
:确定是否是shell内部命令help cd
:获取内部命令帮助
info 命令
:详细命令帮助
- 回车 进入子帮助页面(带有*标记)
- u 进入上层页面
- n 进入下一个帮助小节
- p 进入上一个帮助小节
- q 退出
压缩命令
zip 压缩文件名 源文件
:和Windows中的zip一样
- -r 压缩目录
unzip 压缩文件
:解压缩.zip文件gzip 源文件
:.gz格式压缩,源文件消失gzip 源文件 > 压缩文件
:保留源文件gzip -r 目录
:压缩目录下所有的 子文件,不能压缩目录gzip -d 压缩文件
:解压缩文件gunzip 压缩文件
:解压缩文件
- -r 解压缩目录下的文件
bzip2 源文件
:压缩为.bz2,不保留源文件,不能压缩目录
- -k 保留源文件
bzip2 -d 压缩文件
:解压缩bunzip2 压缩文件
:解压缩
- -k 保留源文件
tar -cvf 打包文件名 源文件
:打包
- -c 打包
- -v 显示过程
- -f 指定打包后的文件名
tar -xvf 打包文件名
:解打包
- -x 解打包
tar -zcvf 压缩包名.tar.gz 源文件
:打包为.tar.gz
- -z 压缩为.tar.gz格式
tar -zxvf 压缩包名.tar.gz
:解压缩tar -jcvf 压缩包名.tar.bz2 源文件
:打包为.tar.bz2
- -z 压缩为.tar.bz2格式
tar -jxvf 压缩包名.tar.bz2
:解压缩tar -jxvf 压缩包名.tar.bz2 -C 目录
:指定解压缩位置tar -zcvf /tmp/test.tar.gz abc abd
:把多个文件打包一起并压缩tar -ztvf test.tar.gz
:查看压缩包里的内容
关机与重启
shutdown [选项] 时间
- -c 取消前一个关机命令
- -h 关机
- -r 重启
shutdown -r 05:06
:5点6分重启
shutdown -r 05:06 &
:放入后台执行
halt
:关机poweroff
:断电init 0
:关机reboot
:重启,相对比较安全init 6
:重启logout
:登出
挂载命令
mount
:查询系统中已经挂载的设备mount -a
:依据配置文件/etc/fstab的内容,自动挂载mount [-t 文件系统] [-o 特殊选项] 设备文件名 挂载点
:挂载命令
- -t 文件系统,加入文件系统类型来指定挂载的类型,可以ext3、ext4、iso9660(光盘默认文件系统)等文件系统
- -o 特殊选项,可以指定挂载的额外选项
- atime/noatime 访问分区文件时是否更新访问时间
- asyns/syns 异步/同步,默认异步
- auto/noauto 自动/手动,
mount -a
命令执行时,是否会自动安装/etc/fstab文件内容挂载,默认自动 - defaults 定义默认值,相当于rw,dev,exec,auto,nouser,async这7个选项
- exec/noexec 执行/不执行,设定是否允许在文件系统中执行可执行文件,默认是exec执行
- remount 重新挂载已经挂载的文件系统,一般用于指定修改特殊权限
- rw/wo 读写/只读,文件系统挂载时,是否具有读写权限,默认rw
- suid/nosuid 是否具有SUID和SGID权限,默认具有
- user/nouser 是否允许普通用户挂载,默认不允许,只有root可以挂载
- usrquota 写入代表文件系统支持用户磁盘配额,默认不支持
- grpquota 写入代表文件系统支持组磁盘配额,默认不支持
mount -o remount,noexec /home
:重新挂载/home,并修改特殊选项(记得改回去!)- 挂载光盘
- 建立挂载点:
mkdir /mnt/cdrom/
- 挂载光盘:
mount -t iso9660 /dev/sr0 /mnt/cdrom/
或者mount /dev/sr0 /mnt/cdrom/
,cdrom是sr0的软链接,建议sr0,文件系统可省略
- 建立挂载点:
- 卸载命令:
umount 设备文件名或挂载点
- 挂载U盘
fdisk -l
:查看U盘设备文件名mount -t vfat /dev/sdb1 /mnt/usb/
,vfat指Windows中的fat32文件系统。注意,Linux默认是不支持NTFS文件系统的,解决方法一,重新编译内核(想多了),方法二,下载ntfs-3g,就算解决了也只读。。
用户登录查看
w
:查看登录用户信息
- USER 登录的用户名
- TTY 登录的终端,tty1是指本机,pts/0是指第一个远程终端
- FROM 从哪个IP地址登录
- LOGIN@ 登录时间
- IDLE 用户闲置时间
- JCPU 指的是和该终端的所有进程占用的时间。这个时间里并不包括过去的后台作业时间,但却包括当前正在运行的后台作业所占用的时间
- PCPU 当前进程所占用的时间
- WHAT 当前正在运行的命令
who
:查看登录用户信息last
:查询当前登录和过去登录的用户信息,默认是读取/var/log/wtmp数据lastlog
:查看所有用户的最后一次登录时间,默认读取/var/log/lastlog内容
shell基础
shell概述
shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动、挂起、停止甚至是编写一些程序。
shell还是一个功能非常强大的编程语言,易编写,易调试,灵活性强。shell是解释执行的脚本语言,在shell中可以直接调用Linux系统命令
echo $SHELL
:输出当前使用的shell- /etc/shells文件查看支持的shell
sh
:进入sh,比如单用户模式、系统的光盘修复模式用的是这个shell,占用的系统资源更少。exit退出csh
:进入schecho [选项] [输出内容]
:-e 支持反斜杠控制的字符转换echo -e "\x68\x65\x6c\x6c\x6f\n"
:输出helloecho -e "\e[1;31m 天上掉下个林妹妹 \e[0m "
- 创建脚本:在文件hello.sh中输入(可以使用vim编辑器),
chmod 755 hello.sh
更改权限,./hello.sh
或者bash hello.sh
(不需要修改权限)来执行脚本
#!/bin/bash
#这一行是注释
echo -e "\e[1;31m 天上掉下个林妹妹 \e[0m "
别名
alias
:查看系统中所有命令的别名(临时生效,重启失效)alias 别名='原命令'
:设定命令别名alias ls='ls --color=never'
~/.bashrc
要永久生效应写入环境变量配置文件,下次启动生效,要马上生效,使用source .bashrc
执行一遍文件unlias 别名
:删除别名
命令生效顺序
- 用绝对路径或相对路径执行的命令
- 执行别名
- bash的内部命令
- 按照$PATH环境变量定义的目录查找顺序找到的第一个命令
常用快捷键
ctrl + c
:强制终止当前命令ctrl + l
:清屏,或者执行clear
ctrl + a
:光标移动到命令行首ctrl + e
:光标移动到命令行尾ctrl + u
:从光标所在位置删除到行首ctrl + z
:把命令放入后台ctrl + r
:在历史命令中搜索
历史命令
history [选项] [历史命令保存文件]
* -c 清空历史命令
* -w 把缓存中的历史命令写入历史命令保存文件~/.bash_heistory
,该文件在正确退出后写入,如果指定该选项则马上保存
* 默认保存1000条,可以在环境变量配置文件/etc/profile中进行修改
* 上下箭头调用以前的命令
* !n
:重复执行第n条命令
* !!
:重复执行上一条命令
* !字串
:重复执行最后一条以该串开头的命令
输出重定向
- 标准输出重定向
命令 > 文件
:覆盖的方式到文件命令 >> 文件
:追加
- 标准错误输出重定向
命令 2>文件
:覆盖方式到文件(注意右边没有空格)命令 2>>文件
:追加(注意右边没有空格)
- 正确输出和错误输出
命令 > 文件 2>&1
:覆盖方式正确和错误输出保存到同一个文件命令 >> 文件 2>&1
:追加方式命令 &>文件
:覆盖方式正确和错误输出保存到同一个文件(注意右侧没有空格)命令 &>>文件
:追加方式(注意右侧没有空格)命令>>文件1 2>>文件2
:正确的追加到文件1,错误追加到文件2
ls &>/dev/null
:把输出结果丢到垃圾桶
输入重定向
wc [选项] [文件名]
- -c 统计字节数
- -w 统计单词数
- -l 统计行数
- wc回车,可以随便输入,
ctrl + d
结束输入可看到统计结果 命令 < 文件
:把文件作为命令的输入
wc < test.log
:统计test.log字符
命令 << 标识符 ... 标识符
:把标识符之间的内容作为命令的输入,如下将统计ddy之间的内容
wc << ddy
abc
adkl
adksljf akldfja
ddy
管道符
- 多命令执行顺序
多命令执行符 | 格式 | 作用 |
---|---|---|
; | 命令1 ; 命令2 | 多个命令顺序执行,命令之间没有任何逻辑关系 |
&& | 命令1 && 命令2 | 逻辑与。当命令1正确执行,则命令2才会执行;当命令1执行不正确,则命令2不会执行 |
|| | 命令1 || 命令2 | 逻辑或。当命令1执行不正确,命令2才会执行;当命令1正确执行,则命令2不会执行 |
ls && echo yes || echo no
:正确执行打印yes,错误no,可以用来让程序通过输出为yes或no来判断命令是否正确执行- 管道符:
命令1 | 命令2
,命令1的正确输出作为命令2的操作对象,1报错2不会执行 ll /etc | more
:分屏查看/etc目录下文件的详细信息netstat -an | grep -i established
:网络状态查询结果中寻找包含established的行,显示连接服务器的客户端netstat -an | grep ESTABLISHED | wc -l
:统计连接服务器的客户端数
通配符
通配符 | 作用 |
---|---|
? | 匹配一个任意字符 |
* | 匹配0个或任意多个字符,也就是可以匹配任何内容 |
[] | 匹配中括号中任意一个字符,例如[abc]代表一定匹配a或b或c |
[-] | 匹配中括号中任意一个字符,-代表一个范围,[a-z]代表匹配一个小写字母 |
[^] | 逻辑非。表示匹配不是中括号内的一个字符,[^0-9]表示匹配一个非数字的字符 |
特殊符号
符号 | 作用 |
---|---|
” | 单引号。在单引号中所有的特殊符号如“$”、“`”(反引号)都没有意义 |
“” | 双引号。在双引号中特殊符号都没有特殊意义,但是“$”、“`”、“\”是例外,拥有“调用变量的值”、“引用命令”、“转义符”的特殊含义 |
“ | 反引号。反引号括起来的内容是系统命令,在Bash中会先执行它,和$()作用一样,不过推荐使用$(),因为反引号容易看错 |
$() | 和反引号作用一样,用来引用系统命令 |
# | 在shell脚本中,#开头的行代表注释 |
$ | 用于调用变量的值,如需调用变量name的值,使用$name |
\ | 转义符。跟在\之后的特殊符号失去特殊含义,变为普通字符,如\将输出“”符号,而不再是变量引用 |
aa=123
,echo $aa
,echo '$aa'
,echo "$aa"
- (反引号被当作特殊作用了,见下面代码)
aa=ls
echo "$aa" //输出ls
aa=`ls` //或者使用$(ls)
echo "$aa" //输出ls的执行结果
echo \$bb //输出$bb
磁盘管理
基本命令
df
:查看磁盘分区使用状况
- -l 仅显示本磁盘(默认)
- -a 显示所有文件系统的磁盘使用情况,包含比如/proc/
- -h 以1024进制计算最合适的单位显示磁盘容量
- -H 以1000进制计算最合适的单位显示磁盘容量
- -T 显示磁盘分区类型
- -t 显示指定类型文件系统的磁盘分区
- -x 不现实指定类型文件系统的磁盘分区
du
:统计磁盘上的文件大小
- -b 以byte为单位统计文件
- -k 以kB为单位统计文件
- -m 以MB为单位统计文件
- -h 按照1024进制以最合适的单位统计文件
- -H 按照1000进制
- -s 指定统计目标
MBR分区
- 主分区不超过4个
- 单个分区不超过2TB
fdisk -l
:显示磁盘列表fdisk /dev/sdb
:给sdb分区,逐步提示。
GPT分区
- 支持128个主分区
- 单个分区可达18EB(GB->TB->PB->EB)
- GPT的主分区中,不适合安装x86架构的系统
- 使用parted工具进行分区(支持MBR和GPT)
select device
:选择磁盘mklabel 分区表类型
:MBR分区表msdos,GTP分区表gptprint
:显示详情mkpart
:添加分区
- 开始位置以MB计算
mkpart test 2000 3000
:创建从2000MB到3000MB空间大小名为test的分区(命令模式添加不能省略分区名)
rm 分区号
:删除分区unit GB
:指定GB单位
分区格式化
mkfs
:格式化工具mkfs.ext3 /dev/sdb1
:格式化sdb1分区为ext3mkfs -t ext4 /dev/sdb2
:另一种写法,功能如上- fdisk工具无法查看GPT分区的磁盘,应使用parted工具
为硬盘添加swap分区
- 建立一个普通的Linux分区
- 修改分区类型的16进制编码
- 格式化交换分区
-
启用交换分区
fdisk /dev/sdb
t
选择分区(可以是逻辑分区?),L
查看编码列表,82为Linux的swap分区编号w
:保存退出mkswap /dev/sdb6
:格式化swap分区(和之前的格式化不一样!)swapon /dev/sdb6
:启用swap分区free
:查看swap加载状况swapoff /dev/sdb6
:停止swap分区
用户管理
用户和用户组
- /etc/group存储当前系统中所有用户组信息
Group | x | 123 | abc,def,xyz |
---|---|---|---|
组名称 | 组密码占位符 | 组编号 | 组中用户名列表 |
- 超级用户的组号是0,1-499是系统预留组号,一般预留给系统服务或者软件的,用户手动创建的用户组从500开始
- 组密码占位符都是x
- /etc/gshadow存储当前系统中用户组的密码信息
Group | * | abc,def,xyz | |
---|---|---|---|
组名称 | 组密码 | 组管理者 | 组中用户名列表 |
- 组密码为空或者*或者!可认为密码为空
- 组管理者空表示该组每个用户都是组管理者
- /etc/passwd存储当前系统中所有用户的信息
user | x | 123 | 456 | xxxxxx | /home/user | /bin/bash |
---|---|---|---|---|---|---|
用户名 | 密码占位符 | 用户编号 | 用户组编号 | 用户注释信息 | 用户主目录 | shell类型 |
- /etc/shadow存储当前系统中所有用户的密码信息
- 用户名:密码(加密过的):::::
基本命令
groupadd sexy
:添加sexy用户组groupmod -n market sexy
:修改用户组名称groupmod -g 668 market
:修改组编号groupadd -g 888 boss
:创建组编号为888组名boss的组groupdel market
:删除组market(应该先删除用户组中的用户,否则和用户相关的文件权限会出问题)useradd -g sexy sdf
:sexy组添加sdf用户useradd -d /home/xxx imooc
:创建用户的同时指定个人文件夹(由于没有指定用户组,会创建和用户名相同的用户组)usermod -c dgdzdymx sdf
:给sdf用户添加备注信息usermod -l cls sdf
:把sdf更名为clsusermod -d /home/cls cls
:修改cls个人文件夹的路径usermod -g sexy imooc
:把修改imooc的用户组userdel jzmb
:删除用户jzmbuserdel -r jzmb
:删除用户jzmb并同时删除个人文件夹-
touch /etc/nologin
:创建nologin文件,禁止除管理员以外的其他用户登录,下一次启动文件将消失,文件内容无关紧要 -
passwd -l cls
:锁定用户cls passwd -u cls
:解锁用户clspasswd -d cls
:删除cls的密码,可以无密码登录- 主要组和附属组
- 用户可以同时属于多个用户组,一个主要组,多个附属组
gpasswd -a cls boss
:为cls添加附属组boss,添加多个附属组用‘,’分隔newgrp boss
:切换为boss组身份,此时需要输入组密码(boss如果有的话)gpasswd -d cls boss
:将cls从附属组boss移除useradd -g group1 -G group2,group3,... user
:添加用户user,并同时指定主要组和附属组-
gpasswd imooc
:更改imooc组的组密码 -
su username
:切换用户,不加用户名为切换到root用户(当然需要密码),root切换到普通用户不需要密码 whoami
:我是谁,显示当前登录用户名id imooc
:显示指定用户信息,包括用户编号、用户名、主要组编号及名称、附属组列表groups imooc
:显示imooc用户所在的所有组chfn imooc
:设置用户imooc资料,依次输入用户资料finger imooc
:显示用户imooc详细资料
其他
硬件设备文件名
- IDE硬盘:
/dev/hd[a-d]
- SCSI/SATE/USB硬盘:
/dev/sd[a-p]
- 光驱:
/dev/cdrom
或/dev/hdc
- 软驱:
/dev/fd[0-1]
- 打印机(25针):
/dev/lp[0-2]
- 打印机(USB):
/dev/usb/lp[0-15]
- 鼠标:
/dev/mouse/
密码原则
- 复杂性:
- 八个字符以上,包含大小写字母、数字、符号
- 不能是英文单词
- 不能是和用户相关的内容
- 易记忆性
- 时效性
软件包选择
- Desktop:桌面
- Minimal Desktop:最小化桌面
- Minimal:最小化(实际服务器选择此包)
- Basic Server:基本服务器(实验需要,选择此包)
- Database Server:数据库服务器
- Web Server:网页服务器
- Virtual Host:虚拟主机
- software development workstation:软件开发工作站
权限
-rw-r--r--
-
:文件类型,-:文件,d:目录,l:软链接文件,还有块设备文件、字符设备文件、套接字文件和管道文件
r w - | r - - | r - - |
---|---|---|
u所有者 | g所属组 | o其他人 |
r读,w写,x执行
“.“代表acl权限,从centos6开始(完全不懂)
PATH环境变量
定义的是系统搜索命令的路径
* echo $PATH
:显示环境变量
系统运行级别
runlevel
:显示当前系统级别,N是空
- 0 关机,如
init 0
- 1 单用户,类似安全模式
- 2 不完全多用户,不含NFS服务
- 3 完全多用户
- 4 未分配
- 5 图形界面
- 6 重启
/etc/inittab文件可以系统默认运行级别
控制字符
- \a 输出警报音
- \b 退格键
- \n 换行符
- \r 回车键
- \t 制表符
- \v 垂直制表符
- \0nnn 按照八进制ASCII表输出字符,其中0为数字零,nnn是三位八进制数
- \xhh 按照十六进制ASCII表输出字符,其中hh是两位十六进制数
echo输出颜色
echo -e "\e[1;颜色 字符串 \e[0m "
- 30m 黑色
- 31m 红色
- 32m 绿色
- 33m 黄色
- 34m 蓝色
- 35m 洋红
- 36m 青色
- 37m 白色
标准输入输出
设备 | 设备文件名 | 文件描述符 | 类型 |
---|---|---|---|
键盘 | /dev/stdin | 0 | 标准输入 |
显示器 | /dev/stdout | 1 | 标准输出 |
显示器 | /dev/stderr | 2 | 标准错误输出 |
零碎
VMware_Install_Clean
软件卸载VM- 虚拟机快照功能推荐,特别强大
- 虚拟机克隆功能
"/"
表示根目录ctrl + alt
:鼠标退出虚拟机ctrl + alt +enter
:虚拟机全屏- 中文插件有zhcon
- setup为RedHat系统专有得工具。
- Tony推荐Xshell,我在此**强烈推荐**MobaXterm。
- table键补全命令或者文件或者目录
echo abc >> log.txt
:可以往log.txt写入abctouch [文件]
:新建文件cat [文件]
:显示文件内容whoami
:我是谁。。。- cd命令是Linux的shell内置命令,所以找不到该命令的位置。
- date:查看系统时间
ctrl + c
:终止退出- Linux中X代表图形界面
- 脚本文件开头需要有
#!/bin/bash
。chmod 755 hello.sh
修改执行权限,./hello.sh
执行该文件 \
:可以断行输入命令#
在Linux中表示注释,#!/bin/bash
例外more
:分屏显示文件内容netstat -an
:查看系统中所有的网络连接