1. mkdir : make directory
2. cd : change directory
3. pwd : print working directory
4. touch :"摸"一下文件,如果文件不存在,就建立文件,如果存在,就改变文件的访问时间。
5. uname -r -m -a 查看内核的版本
===================================================================================
===========================================================================
1. cat #查看文件内容
cat >/data/oldboy.txt<<EOF
> I am studying linux.
> EOF
#自动创建文件oldboy.txt,输入I am studying linux. EOF 并把I am studying linux.保存到文件oldboy.txt中。
cat >>/data/oldboy.txt<<EOF
> I am studying linux now.
#两个">"是追加。EOF要成对出现,中间夹的内容就可以输出到oldboy.txt中。EOF可以换成其他字符,不要和中间夹的
cat >>/data/oldboy.txt<<aa
> I am studying linux now.
> aa
#箭头>的方向就是数据的流向,数据从<<来。
#">"或"1>" 重定向,会清除文件里面所有以前的数据,echo "lixiang" >m.txt如果文件不存在,还有创建文件的作用即有touch的作用;还有清除的作用,>m.txt,即清除m.txt文件
#"<"或者"<0" 输入重定向
#“>>”或者"1>>"追加重定向,文件结尾加入内容,不会删除已经存在的内容
#"<<"或者"<<0" 追加输入重定向
#箭头的指向就是数据的流向
!
标准输入(stdin):代码为0,使用<或者<<,数据流向从右向左
正常输出(stdout):代码为1,使用>或者>>,数据流向从左向右
错误输出(stderr):代码为2,使用2>或者2>>。例ech 111 2>oldboy.txt,报错的信息存到oldboy.txt
例ech 111 >oldboy.txt 2>oldgirl.txt错误存到oldgirl.txt
#cat -n /data/test 其中-n代表行号一起打印出来
===========================================================================
2. echo #打印,单行或者多行文本插入常用命令,内容都是放到文件的尾部
echo "I am studying linux." #直接打印内容,加双引号比较标准,不加也能输出。
echo 123 #直接打印内容。
echo "I am studying linux now" > oldboy.txt #把打印的结果放到oldboy.txt,一个">"是覆盖,两个">"是追加。“>”为重定向。
echo "
oldboy
oldgirl
"
#多行打印
echo "oldboy
oldgirl">oldboy.txt
#echo 101 >>test.txt 追加101行
#echo oldboy >c/test.txt 向c目录下面的test.txt追加字符串oldboy
===========================================================================
3. touch
#创建文件
#创建多个文件 touch oldboy.txt oldgirl.txt
#对于已存在的文件就是修改时间戳
===========================================================================
4. rm
#remove删除文件或者目录
#rm -f oldboy.txt
#-f强制删除,不提示是否要删除
#-r删除目录
#生产场景尽量不要使用rm,比较危险,如果非要用,一定要先cp备份
#mv移动到一个临时目录。回收站。
#find删除
#-v --verbose显示运行时的详细信息
===========================================================================
5. cp copy 拷贝文件或目前
例 cp oldboy.txt /tmp/
-a 拷贝目录相当于 -pdr 拷贝目录建议用-a,功能强大。
-r copy directorys recursively 递归地拷贝目录
-p 连同档案的属性一起复制过去,而非使用默认属性。
例 cp oldboy.txt /tmp/new_oldboy.txt
#拷贝并重命名
===========================================================================
6. mv
#move移动目录或文件
#例mv /data /root/移动目录
#mv hell.py hello.py将文件hell.py重命名为hello.py
===========================================================================
7. pwd print work directory 查看当前所在目录
===========================================================================
8. ls
# list 查看目录文件,列表
# ls -a 查看所有文件包括隐藏文件, -a all
# ls -l 查详细信息,-l(long)
ls -l /
ls -l /|less
# ls -d 只显示目录的属性,-d(directory)
ls -d /
ls -ld / 长格式显示根目录属性
ls -ld /* 长格式显示根目录下的所有的目录的属性,不包括文件
权限信息 硬链接数 属主(被哪个用户所拥有) 属组 文件大小 文件创建日期 文件名
-rw-r--rw- 1 root root 329 Mar 31 14:19 fun.c
如果权限信息-rw-r--rw-后面有个点-rw-r--rw-.说明这个文件是在selinux开启的情况下创建的,代表安全的
selinux是国家安全局开发的一个软件,用来加强linux安全的。你只要知道有这个点是在安全状态下创建的就行
去掉这个点剩下的就是权限信息,权限信息占用10位,
10位
权限信息的解释:
第1位代表文件类型,
-代表普通的文本文件
d代表目录,目录也是文件,我们叫目录文件,对应Linux来说,一切皆文件
l代表软连接,就相当于windows中的快捷方式,
ln -s fun.c ln_fun.c
lrwxrwxrwx 1 root root 5 May 21 21:50 ln_fun.c -> fun.c
这里ln_fun.c就是源文件fun.c的软链接
b代表block,设备文件,为什么称硬盘位快设备文件,
首先来补充一个知识,往硬盘上面写数据,至少写一个扇区,
在操作系统级别,有一个单位叫做块,操作系统在写文件的时候,比如说
你的文件有1G,它不是一次性全都写到硬盘上,它会把文件分成一个个小
的块,一个小块一个小块的往硬盘里面写,也就是在操作系统级别有那么
一个逻辑单位block,这个逻辑单位就映射到硬件设备的硬盘上,所以我们
把硬盘称为块设备。
p代表管道文件
第2~4位:属主的权限
分三类:读r,写w,执行x(execute)
没有权限用-代替
第5~7位:属组的权限
第8~10位:其他用户权限
不属于主、组的成员都是其他用户
# ls -d 只显示目录的属性,-d(directory)
# ls -ld 以长格式显示目录的属性
===========================================================================
9. man 命令详细的帮助
===========================================================================
10. 命令--help 命令的简单帮助
===========================================================================
11. help
#bash内置命令的帮助
#man cd 查看有哪些内置命令
#help cd
#help alias
===========================================================================
12. find 查找或者删除
find /tmp/data -name "oldgirl.txt"
#-name 按照名字查找,查找的内容用""
find /tmp/data -type f -name "oldgirl.txt"
#同时查找是文件同时文件名是oldgirl.txt的文件
find /tmp/data -type f ! -name "oldgirl.txt"|xargs rm
#除了oldgirl.txt不删外,目录中其他文件全部删除,"!"是非的意思。
find /tmp/data -type f
#查找出对应路径下面的文件,-type文件类型,f file指的是文件
find /root/data/ -type f -exec rm -f {} \;
find . -type f -name "*.txt" -exec ls -l {} \;
#{}指的是find找到的内容,-exec execute处理查找的结果,\;转义
#"\"让一个有意义的字符脱掉马甲。例如 . 代表当前目录,\.代表点号。
find /root/data/ -type f ! -name "oldgirl.txt" -exec rm -f {} \;
find . ! -type f|xargs ls -ld
#-a是and的意思,-o是or的意思
#除了oldgirl.txt不删外,目录中其他文件全部删除,"!"是非的意思。
find /tmp/data -type f|xargs rm -f
#查找到的内容放到管道里面;"|"代表管道(把前一个命令结果的输出交给后一个程序继续处理),xargs意思是把查找到的结果一个一个的处理,相当于{}的作用。
#find ./ -type f -name "test.txt"|xargs sed -i 's#oldboy#oldgirl#g' 把当前目录下所有test.txt文件找出来,并用oldgirl替换文件里面的oldboy里面的内容,一个一个处理。(工作上推荐用)
#find . -type f -name "test.txt" -exec sed -i 's#oldboy#oldgirl#g' {} \; 把当前目录下所有test.txt文件找出来,并用oldgirl替换文件里面的oldboy里面的内容
#sed 's#oldgirl#oldboy#g' 'find /data -type f -name "test.txt"' 效率较高,并行处理,
#find . -type f -name "test.txt"|xargs cat 其实xargs后面可以加任何命令
#find . -type f -name "*txt" 模糊查找
#-type d 查找的是目录
===========================================================================
13. 在man中搜索
例如搜索"-type"输入/-type,按n继续搜索。
===========================================================================
14. cd ..
#退出到上级目录
cd .
#进入当前目录
cd ./
#进入当前目录
cd ~ 或 cd
#返回当前用户的家目录
cd -
#返回上一次所在的目录
===========================================================================
15. rmdir
#删除目录,专门用来删除空目录
#rmdir data/
#-p 递归删除
#-v显示详细删除过程
===========================================================================
16. head
#头部,取文件的前n行,默认前10行(不带参数),取前三行-3。
#例如 head -3 test.txt
===========================================================================
16-1.
tail
#尾巴,取文件的最后n行,默认最后10行,取最后三行 tail -3 test.txt
#-f 跟踪一个文件尾部的实时变化
#例 只查看test.txt文件(100行)内第20到第30行的内容
#head -30 test.txt|tail -11 (比较次的方法)
#sed -n '20,30p' test.txt (比较牛的方法)
#sed -n '30p' test.txt 只取一行
===========================================================================
17. grep
#常用来过滤
#grep "oldboy" oldboy.txt 把包含oldboy的整行都打印出来
#grep -o "oldboy" oldboy.txt 只打印包含的内容,-o 只输出匹配的字符
#grep -i "oldboY" oldboy.txt不区分大小写
#grep -E "3306|1521" /etc/services 包含3306或者包含1520的行都打印出来,-E过滤多个字符串
#grep -E "3306|1521" /etc/services等价于egrep "3306|1521" /etc/services 扩展的grep
#过滤器,把想要的或者不想要的分离开
#Linux三剑客,老三,擅长过滤
#一般过滤的内容加双引号,养成习惯
#grep -v "oldboy" test.txt 参数-v表示除了oldboy以外,把其他行打印出来
#也有人会结合管道来用,cat test.txt|grep -v "oldboy" test.txt 但这种效率不高
#grep 30 -B 10 test.txt 打印第30行之前的10行,包括第30行
#grep 20 -A 10 test.txt 打印第20行之后的10行,包括第20行
#grep 25 -C 5 test.txt 打印第25行的前后5行
#grep "string" -B 10 test.txt
===========================================================================
18. sed
#常用来取行及替换
#stream editor 流编辑器,过滤器
#Linux三剑客,老二,擅长取行,用的是单引号,要过滤的内容用双斜线包起来
#sed -n '2p' test.txt 把第二行打印出来
#sed -n '1,2p' test.txt 打印第一行到第三行
# sed -n '/oldboy/p' test.txt 把oldboy挑出来,-n 取消默认输出不改变文件内容,-i改变文件内容,处理命令p print
# sed '/oldboy/d' test.txt 把oldboy删掉,剩下的挑出来,处理命令d delete
#sed -i 's#oldboy#oldgirl#g' test.txt 用oldgirl替换oldboy的内容,-i 表示改变文件内容(如果忽略则不改变文件内容),s代表查找替换,g(global),与s联合使用时表示
#对当前内容全替换,'#'是分隔符,可以用其他符号替换,如等号sed -i 's=oldboy=oldgirl=g' test.txt 尽量用一些特殊的符号如
# ‘=’‘@’‘/’等
#sed -i 's#oldboy#oldgirl#' test.txt 没有g也可以替代
#sed -i 's/oldg.rl/oldboy/' test.txt .为通配符,需要注意的是,一个点只能代替一个符号
#sed -i 's/oldg..l/oldboy/' test.txt .为通配符,需要注意的是,一个点只能代替一个符号
#基础正则表达式:一些特殊的符号表示一些特殊的作用和功能
#在正则表达式里面,.代表单个任意字符,*表示重复前面任意0个或多个字符,.*表示匹配任意字符
#sed -r 's#(可以用正则匹配)#\1#g' test.txt 把前面正则匹配的括号内的结果,在后面用\1取出来操作。-r代表正则,表示后面的字符如()不用\转义了。
#sed -r 's#(.*)#\1#g' test.txt 按行来做匹配
#sed -r 's#(.*) fff#\1#g' test.txt 括号遇到空格终止,正则匹配是贪婪模式,它会尽量往后匹配。
#sed -r 's#(.*) (.*)#\1 \2#g' test.txt 其中\2表示取第二个括号,第一个括号遇空格结束。
===========================================================================
19. mkdir
# mkdir -p /data/oldboy/test 递归创建目录 -p parent
# -v 显示详细创建过程
===========================================================================
20. df
#查看磁盘空间
# df -m 单位以M来显示使用状况
# df -m /dev/sda1 查看设备sda1磁盘空间使用情况
# df -m 如果文件系统列表不写,则列出当前系统所有文件系统的使用情况
[root@book ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda3 7406992 1443700 5580368 21% /
tmpfs 953244 0 953244 0% /dev/shm
/dev/sda1 194241 27584 156417 15% /boot
/dev/sda3是文件系统,实际操作的不是分区,而是文件系统
一个block多大:4K = 512*8
===========================================================================
21. yum
#Linux里面的包管理器
#yum 可以帮助解决依赖问题,其原理也是调用rpm命令,
#例如yum install tree(包名)-y 下载tree包,然后调用rpm命令安装tree包,如果需要依赖包,帮你下载帮你提前安装。
#例如yum install telnet -y 通过添加-y中途免按回车键
#yum grouplist
===========================================================================
22. rpm
#Linux里面一般安装软件一般用rpm。
#RPM是RedHat Package Manager(软件包管理器)的缩写,是由Red Hat公司提出的一种
#软件包管理标准,文件后缀名为.rpm。
#安装参数常见的有-i(install) -v(vision) -h(human) 安装 显示输出,人类可读展示
# rpm -ivh 包名.rpm
#最大问题,依赖问题不好解决
#安装a的时候它找你要b,你安装b的时候它找你要c,你安装c的时候它找你要d
#rpm -qa tree 查询tree这个包有没有装, -q query -a all
===========================================================================
23. tree
#显示当前目录树结构
#tree -L 数字 目录 表示显示多少层 例如 tree -L 1 /
#-d 仅显示目录
# tree /tmp/data
#磁盘设备默认没有入口,不能访问,需要挂载,挂载的实质就是给这个文件设备找一个入口,
#目录可以任意挂载到任意的磁盘上面 例如 把目录/etc/挂载到第一张磁盘第一个分区/dev/sda1,也可以把目录/etc/挂载到第二张磁盘第一个分区/dev/sdb2
#mout /dev/sda1 /etc 执行这条命令后,就可以通过/etc目录访问第一张磁盘第一个分区了sda1,mout /dev/sdb2 /bin 有可能就会发现/etc 和/bin 不是一个磁盘。
#windows的目录和分区是绑在一起的,C盘下的目录绝对不属于D盘。这一点Linux不是,
#Linux目录结构和磁盘分区是分离的,可以自由组合,
#linu系统磁盘分区知识简介
#1)磁盘在使用前一般要先分区,就像买房子,买到的房子都是分好房间的,不可能是一个开间吧,一般都是几室几厅,Windows也有分区,CDEF盘等
#2)linux 分区有主分区,扩展分区和逻辑分区之分,一块硬盘最多可以有4个主分区,其中一个主分区的位置
#可以用一个扩展分区替换,在这个扩展分区内可以划分多个逻辑分区。
#3)如果规划的分区数量超过4个,这分区组合为3primary+1extend或2p+1e或者1p+1e。例如要分5个分区,这分区组合为3primary+1extend(再分2个逻辑分区)或2p+1e(再分3个逻辑分区)或者1p+1e(再分4逻辑分区)。
#绝对不存在4p+1e,因为要保证4p+1e<=4,e最多有一个,可以没有
#4)一块磁盘最多只能有一个扩展分区,扩展分区不能直接用,必须在扩展分区上划分逻辑分区,然后格式化(创建文件系统),
#之后才能存数据或装系统。
#SCSI:SAS/SATA/SSD
#系统的第一块SCSI接口的硬盘称为/dev/sda 分区sda1,sda2...
#系统的第二块SCSI接口的硬盘称为/dev/sdb
#IDE
#系统的第一块IDE接口的硬盘称为/dev/hda 分区hda1,hda2...
#系统的第二块IDE接口的硬盘称为/dev/hdb
#分区的编号1-4,只能给P+E
#L分区的编号只能从5开始
#例如五个分区的
#1p+1e p1 l5 l6 l7 l8
#2p+1e p1 p2 l5 l6 l7
#3p+1e p1 p2 p3 l5 l6
#linux 分区要求
#1)/根分区 用来存放系统文件及程序。其大小至少在5GB以上
#2)要有一个swap(交换)分区,它的作用相当于Windows里面的虚拟内存,swap分区的大小一般为虚拟机物理内存容量的
#1.5倍(内存<8GB),但是如果当系统物理内存大于8GB时,swap分区配置8-16GB即可,太大无用,浪费磁盘空间。
#swap分区不是必须得,但是大多数情况还是设置比较好,
#当系统使用了swap分区(虚拟内存)的时候说明系统很慢了,一种就是程序没有写好,一种就是内存不够用了。
#个别企业的数据库应用场景不分swap,接受不了使用swap性能下降的情况,但是如果不用swap,一旦内存不够用,直接down机,看你的选择
#3)/boot分区,这是Linux系统的引导分区,用于存放系统引导文件,如Linux内核等,所有的文件的总大小一般只有几十MB,
#并且以后也不会增大太多。该分区可以设置为100~200MB,这个分区也不是必须的。如果不设置引导分区,他就会放在根分区下面。
#Mount Point意思是挂载点,这是Linux下访问磁盘分区的入口,如果要往分区写入数据,就必须通过/boot入口来写入,这一点和windows不同。
#File System Type的意思是文件系统类型,就像Windows的fat/ntfs一样,只有在设置了文件系统并格式化挂载后,分区才能存放数据。
#ext2/ext3/ext4是适合Linux的文件系统类型。由于ext3文件系统多了日志记录功能,因此系统恢复起来会更快速,ext4是ext3的升级,效率更加高效。
#因此建议使用ext4类型,而不是使用ext2/ext3类型。
#文件系统相当于你买了房子,先得装修,装修的过程就是文件系统,格式化的过程就是创建文件系统。就操作系统存储和组织文件的一种机制。
#
===========================================================================
24. alias
#查看及定义别名
# alias cp='cp -i'
# unalias cp 取消别名,不建议用,用了系统的防护性能降低
# \cp /mnt/test.txt /tmp/ 规避别名的方法一,cp前面加反斜线
# /bin/cp test.txt /tmp/ 规避别名的方法二,cp使用绝对路径
#别名是在一个配置文件里面配的
#别名的作用之一是保护系统
#别名的作用之二是让复杂的内容变简单,例如alias oldboy="echo I am oldboy linux."
#alias|grep oldboy
#alias rm="rm can not be used,pls use mv"
#用命令行定义别名临时生效,重启失效
#别名生效的位置:针对root用户:/root/.bashrc
#别名所有用户生效:/etc/bashrc或者/etc/profile定义生效 source /etc/profiles
#echo "alias vi='vim'">>/etc/profile 永久生效
#alias ssh='/etc/init.d/sshd'
#ssh restart
===========================================================================
25. ~
#用户的家目录,针对root环境,~就代表/root
#
===========================================================================
26. seq
#sequence
#seq 5 打印1~5
#seq 2 5 打印2~5
#seq 3 3 10 第一个3为起始,第二个3为步长,10为终止
#-s 指定序列的分隔符 seq -s "@" 10
#-w
#seq 1 100 >test.txt 把1到100重定向到文件test.txt中
===========================================================================
27. awk
#常用来取列
#三剑客老大,擅长取列
#一门语言,过滤内容(取列),打印
#awk '{print $1}' 文件 $1表示第一列
#awk -F ":" '{print $1}' /etc/passwd 以冒号为分隔符打印第一列,用-F指定分隔符
#awk -F ":" '{print $NF}' /etc/passwd 以冒号为分隔符打印最后一列,NF表示最后一列
#awk -F ":" '{print $(NF-1)}' /etc/passwd 以冒号为分隔符打印最后一列减一
#awk -F ":" '{print $1 $2}' /etc/passwd 同时打两列,列之间没有空格
#awk -F ":" '{print $1" "$2}' /etc/passwd 中间可以加空格
#awk -F ":" '{print $1"@"$2}' /etc/passwd 中间可以加其他字符
#awk '{if(NR<31 && NR>19) print $0}' test.txt 只查看test.txt文件(100行)内第20到第30行的内容,
#-NR代表行号,$0代表整行,一般建议用sed来取行
===========================================================================
28. LANG=en
#目录树出现乱码执行
===========================================================================
29. cd
#change directory切换目录
===========================================================================
30. ;
#如pwd;pwd
#命令行的分隔符
===========================================================================
31. {}
#生成字符或者数字序列,一般配合echo等命令使用,find里的{}意思是前面命令的结果
#类似seq,但是seq主要是数字,而{}不仅仅是数字,echo {1..10},echo {a..z},echo stu{001..100},mkdir stu{001..100}
===========================================================================
32. !
# !+字母 表示调出最近一次以此字母开头的命令,!m调出最近一次以m头的命令
# !!调出最近一次命令,相当于按了向上箭头,
# !+数字 表示调出历史的第几条命令
===========================================================================
33. history
#打印用户操作的历史记录,并编号,默认1000个
#history -c 清空所有的
#history -d 行号 例如history -d 18指定删除第18行的历史记录
#历史记录越少越安全,防黑客查看历史记录入侵
#export HISTSIZE=5调成5个(临时生效),建议前面接export,这样写就是比较规范的。
#要想永久生效,需要写入/etc/profile中,与TMOUT是一样的
#echo "export HISTSIZE=5" >>/etc/profile 要使其永久生效,追加到/etc/profile
#查看tail -1 /etc/profile
#source /etc/profile或 . /etc/profile使配置生效
#还有一个叫历史记录文件的命令数量变量HISTFILESIZE(在~/.bash_history)
#echo "export HISTFILESIZE=5" >>/etc/profile.
#查看tail -1 /etc/profile
#source /etc/profile或 . /etc/profile使配置生效
#查看系统环境变量设置效果 echo $HISTSIZE
#查看更改的效果history
#查看更改的效果cat ~/.bash_history
#history是内置命令,只能用help history查看帮助
===========================================================================
34. -
#上一次的目录
#cd -回到上一次的目录
===========================================================================
35. tab键
#命令或者路径补全,如果tab不到路径或者命令,就代表没有这个路径或者命令;还有可能权限不足。
#第一重要快捷键
#按三次
===========================================================================
36. ctrl+a
#光标跳到开头;a字母的第一个
===========================================================================
37. ctrl+e
#光标跳到结尾,e代表end
===========================================================================
38. ctrl+u
#把光标之前的剪切掉
===========================================================================
39. ctrl+k
#把光标之后的剪切掉
===========================================================================
40. ctrl+c
#中断
===========================================================================
41. ctrl+shift+c
#复制
===========================================================================
42. ctrl+shift+v
#粘贴
===========================================================================
43. ctrl+d
#退出,logout
===========================================================================
44. ctrl+l
#清屏,相当于clear
===========================================================================
45. rpm -qa openssh openssl
#查询服务端的ssh及ssl
#之所以可以通过ssh连接Linux靠的就是openssh openssl这两个软件
#openssh是专门提供ssh服务的,openssl是为ssh提供连接加密的程序
#ssh是一个加密的协议
#可通过ps -ef|grep ssh 查到ssh服务
#ssh服务端口已经规定好了,端口号为22
#SSH客户端最常用的工具就是windows平台的SecureCRT了,除了SecureCRT外,还有xshell、putty等常用软件以及Linux下的ssh客户端
#SSH协议是Secure Shell Protocol的简写,协议是对话的语言工具
#SSH是专为远程登录会话和其他网络服务提供的安全性协议,SSH有两个不兼容的版本,SSHv1和SSHv2,v1有漏洞,现在普遍用v2
#早期的远程登录还有telnet协议,端口为23,
#netstat -lntup|grep ssh 查看ssh服务,查看端口
#ss -lntup|grep ssh相当于netstat -lntup|grep ssh
===========================================================================
46. ipconfig / ip add
#查看配置好的IP
===========================================================================
47. /etc/init.d/iptables stop
#临时关闭防火墙
#这条命令相当于Redhat里面的service iptables stop(这个命令不能用tab键,不建议用)
===========================================================================
48. halt
#直接关机
===========================================================================
49. shutdown
#关机
===========================================================================
50. cat /etc/redhat-release 或者 uname -m 或者 uname -r
#查看内核版本
#uname -r 打印系统内核信息
#-m 显示是32 or 64bit
#-n 主机名
#-a 所有
===========================================================================
51. hostname
#查看主机名
#hostname oldboy 把主机名临时修改为oldboy
#永久修改主机名 vim /etc/sysconfig/network
1 NETWORKING=yes
2 HOSTNAME=book 在这里修改后保存
===========================================================================
52. useradd
#useradd oldboy
#添加用户,只要添加用户,就会添加如下三个文件
#tail -1 /etc/passwd
#tail -1 /etc/group 生成用户组
#tail -1 /etc/shadow 存放密码
#也可以用adduser,不常用
===========================================================================
53. passwd
#为用户添加密码
#passwd oldboy
#sudo passwd root
===========================================================================
54. whoami
#查看当前用户
===========================================================================
55. [root@book /]#
#@前面是当前用户,@后面是主机名,再后面是当前用户所在的路径
#这个受到环境变量PS1控制,echo $PS1
#可以更改,如:export PS1="[\u@\h \W \t]\$" 把时间给加上[root@book / 18:11:08]$
===========================================================================
56. su -
#变更为其他使用者身份
#带-的意思是把当前的环境变量切换过去,
#环境变量可以理解为系统的视线范围,配置进入环境变量的程序就等于是进入了系统的
#视线范围。例如在windows下打开DOS命令窗口后输入程序名,系统就会把在其视线内的
#(环境变量内)的程序找出来,如果程序没有配置进入环境的变量的话,那系统自然就
#找不到。
#环境变量实际上就是用户运行环境的参数集合。Linux是一个多用户的操作系统,而且在
#每个用户登入系统后,都会有一个专用的的运行环境。这个运行环境实际上就是一组环境
#变量的定义。用户可以对自己的运行环境进行定制,其方法就是修改相应的系统环境变量。
#常见的环境变量如下:
#作为惯例,所有的环境变量名都是大写的,由于Linux区分大小写,这点要留意。当然可以自己定义一些变量,如
#$path,$pAtH,但shell不会理会这些变量。
#PATH是系统路径,可执行命令的搜索路径,如果要执行的命令的目录在$PATH中,就不必输入这个命令的
#完整路径,直接输入命令就可以了。
#HOME是系统根目录
#HISTSIZE是指保存历史命令记录的条数
#LOGNAME是指当前用户的登入名
#HOSTNAME是指主机的名称,若应用程序要用到主机名的话,通常是从这个环境变量中来取得的
#SHELL是指当前用户用的是哪种shell
#LANG/LANGUGE是和语言相关的环境变量
#MAIL是指当前用户的邮件存放目录
#设置环境变量方法如下:
#通过echo查看环境变量,例如echo $SHELL ,要获取某个环境变量,在其前面加上$符号,否则变量名就会被
#当作普通文本了
#通过export设置新的环境变量,例如export HISTSIZE=5调成5个(临时生效),修改某个环境变量,前面不加$
#要想永久生效,需要写入/etc/profile中
#echo "export HISTSIZE=5" >>/etc/profile 要使其永久生效,追加到/etc/profile
#source /etc/profile或 . /etc/profile使配置生效
#通过env显示所有的环境变量
===================================================================================
57. runlevel
#查看运行级别
#运行级别的详细文件在tail /etc/inittab
# Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#切换运行级别:init 数字
# init 6 重启
# init 5 切图形界面,相当于startx,但需要安装桌面软件包
===================================================================================
58. SELinux
#SELinu(Security-Enhanced Linux)是美国国家安全局(NSA)对于强制访问控制的实现
#这个功能让系统管理员又爱又恨,现在国内玩Linux基本需要把它关闭,至于安全问题我们
#可以通过其他手段解决。不关的话,我们的每个服务都要去开允许,要设置很多规则。配置
#任何服务都把你挡的好难受。
#配置文件在 /etc/selinux/config
#sed -i 's#SELINUX=enforcing#SELINUX=disable#g' /etc/selinux/config让其永久关闭
===================================================================================
59. chkconfig
#设定开机自启动服务
#chkconfig --list查看服务在各个级别的开机状态
#chkconfig --list atd查看服务atd在各个级别的开机状态
#chkconfig --level 3 atd off关闭3级别的服务atd
#chkconfig --level 345 atd off同时关闭3,4,5级别的服务atd
#chkconfig sshd on 开启
#精简开机系统启动,与windows类似,Windows可以通过msconfig命令来关闭启动程序
===================================================================================
60. iptables
#iptables -L -n 查看当前防火墙的状态
#/etc/init.d/iptables stop 关闭防火墙
#/etc/init.d/iptables status 关闭后查看防火墙的状态
===================================================================================
61. Linux优化
#1 建立普通账号,使用普通用户登入
#2 处理SELinux
#3 处理防火墙
#4. 精简开机自启动服务
#5. Linux最小化安全理念五条
===================================================================================
62. sshd
#ssh服务的启动文件是/etc/init.d/sshd
#ssh服务的配置文件是/etc/ssh/sshd_config
#服务器都是带d的,不带d的都是Linux本地的客户端,比如Linux版本的crt
#ps -ef|grep sshd
#备份的好处有两个,一个是错了可以还原,另外一个是用来与更改后的文件对比
#配置文件都是顶格书写
#######by Edison Tao#2018-08-21###
#Port 52113
#PermitRootLogin on
#PermitEmptyPasswords no
#UseDNS no
#GSSAPIAuthentication no
#ListenAddress 192.168.80.129
#######by Edison Tao#2018-08-21###
#/etc/init.d/sshd restart修改配置文件后要重启服务
#netstat -an|grep EST
#netstat -lntup|grep sshd查看端口号
#vpn
===================================================================================
63. diff 或者 vimdiff
#比较 ,接两个文件
# diff sshd_config sshd_config.tao.20180821 比较修改前及修改后的两个文件
# vimdiff sshd_config sshd_config.tao.20180821 图形化比较修改前及修改后的两个文件
#高亮显示区别
#Windows下面也有类似的软件,如beyond compare
===================================================================================
64. logout
#退出当前用户
===================================================================================
65. visudo
#编辑sudo配置文件,相当于 vi /etc/sudoers
#在root用户下,在文件/etc/sudoers第99行添加,例如 oldboy ALL=(ALL) ALL
#添加用户后,oldboy拥有的权限与root相当,root相当于皇帝,oldboy相当于将军,添加
#了oldboy ALL=(ALL) ALL这一句相当于授权,具体去调兵例如直接执行$useradd oldgirl
#肯定不行,必须要虎符,sudo就是虎符。用sudo才会检查sudo的配置文件。
#在root用户下,在文件/etc/sudoers第99行添加用户oldboy ALL=(ALL) /bin/touch (注意此处一定是全路径,多个命令要用逗号空格分开)
#意思是皇帝只授权touch命令给将军
#如果将军要执行其他皇帝的命令会被拒绝例如 Sorry, user oldboy is not allowed to execute '/bin/find -name oldgirl2.txt' as root on book.
#在root用户下,如果在文件/etc/sudoers第99行添加oldboy ALL=(ALL) NOPASSWD: ALL
#那么此时将军oldboy不仅具有皇帝root的所有权限,而且切换到root用户都不需要密码,甚至可以更改root为非管理员用户,功高盖主。
#这种情况可以不需要密码通过sudo su -直接切到root。
#sudo passwd root 给root设置密码
===================================================================================
66. cat /etc/passwd
#查看系统有哪些用户
===================================================================================
67. which
#用来查询命令的全路径 方法一
#例如which useradd 原理:which搜索范围来自全局环境变量PATH变量对应的路径
#可以通过echo $PATH把PATH路径全部打印出来,不同的路径之间以冒号分割,查找的路径
#从前到后按顺序查找,如果这种路径下面都没有,则报告找不到。PATH变量是可以更改的,
#可以追加或删除路径都PATH变量里面去
#grep PATH /etc/profile
#export PATH="/tmp:$PATH" 临时配置环境变量,一定要小心,如果不带$PATH,那么PATH只留/tmp,
#所有的命令失效,因为大部分的系统非内置命令都是去$PATH里面找,如果里面找不到,它就认为没有这个命令
#永久修改前面临时修改的命令放到/etc/profile下,使用source /etc/profile使得修改立即生效
#/tmp:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin配置后的效果,重启失效
#touch /tmp/oldboy 模拟创建命令
#chmod +x /tmp/oldboy 命令一般都有执行权限,加上执行权限,必须要加执行权限上才能查到
#which oldboy 查询即可在路径/tmp/oldboy中找到
#通过find命令也可以查到命令的路径,例如find / -name "useradd" 方法二
#通过whereis -b useradd 方法三 -b表示二级制 不是很重要
#whereis pwd查找到可执行程序的位置/bin/pwd和手册叶的位置/usr/share/man
#通过locate useradd 方法四 不是很重要
#内置命令没有路径比如 cd ,只要位置查不到的就是内置命令,所有内置命令用sudoers管理不了
===================================================================================
68. id
#查看uid gid groups
#例如id oldboy
===================================================================================
69. UTF-8
#非定长,1~4字节,广泛支持,一个汉字用UTF-8字符集的话占三个字节,有各个国家的
#语言的话用UTF-8支持比较好
#字符集对应的配置文件在/etc/sysconfig/i18n
#cat /etc/sysconfig/i18n
#LANG="en_US.UTF-8"
#我们常用变量LANG来调字符集,LANG=en表示把字符集调成英文字符集
#sed -i 's#LANG="en_US.UTF-8"#LANG="zh_CN.UTF-8"#g' /etc/sysconfig/i18n替换成中文字符集
#替换完还没有生效,要用source或者.让他生效 source /etc/sysconfig/i18n
#你可以查看变量LANG看一下,echo $LANG
#这样就把服务器的字符集更改了
#服务端改了 ,客户端也得改,客户端就是我们用的CRT,进入选项->会话选项->终端->外观
#->字符编码改为UTF-8 字体也改为中文,字符集里面选GB2312
#然后tree看一下,没有乱码了
#如果你在中文系统的Linux终端中显示有乱码,可以尝试键入 LANG=C
===================================================================================
70. date
#显示时间
#手动修改时间date -s "2018/08/23 20:54"
#cal显示日历
#hwclock刷入BIOS
====================================================================================
71. ntpdate
#ntpdate是一个Linux时间同步服务软件,先要查看本机是否安装ntpdate服务,
#如果没有安装,请用yum install -y ntpdate安装
#安装成功后通过ntpdate time.nist.gov同步网络时间,time.nist.gov是时间服务器
#ntpdate time.nist.gov是输入一次执行一次
#如果要定时执行可以通过cron来实现
#echo "*/5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1" >>/var/spool/cron/root
#每隔五分钟执行ntpdate time.nist.gov
#crontab -l 相当于cat /var/spool/cron/root
#>/dev/null 2>&1(或1>/dev/null 2>&1) 方法一 与 1>/dev/null 2>/dev/null(推荐使用)方法二
#&>/dev/null方法三 方法等价,机标准的正确输出及错误输出都输出到同一个文件(黑洞)
#方法等价,机标准的正确输出及错误输出都输出到同一个文件(黑洞)
#/dev/null空设备,黑洞,什么东西往黑洞里面扔就没有了,系统产生的垃圾,又没有回收站,直接往黑洞里面扔就行
====================================================================================
72. TMOUT
#export TMOUT=300 CRT终端300秒不动自动退出
#echo "export TMOUT=300" >>/etc/profile 要使其永久生效,追加到/etc/profile
#查看tail -1 /etc/profile
#source /etc/profile或 . /etc/profile是配置生效
====================================================================================
73. ulimit
#修改shell相关资源限制
#ulimit -n 查看文件描述符,文件描述符越大,可运行的进程越多
#ulimit -SHn 65535 文件描述符调整为65535 (临时生效)
#echo "ulimit -SHn 65535" >>/etc/rc.local 永久生效,这样开机就会自动执行这条命令
#ulimit是一个内置命令,请通过help ulimit查看
#echo "* - nofile 65535" >>/etc/security/limits.conf(建议使用)
#ctr+d 退出重新登入就生效了
#ulimit -n再次查询值就变成了65535了
=====================================================================================
74. 优化内核参数
#TCP/IP三次握手四次断开原理过程详解
#syn队列,SYN攻击,消息中间件,异步(实时性不好,效率低),同步(实时性好,效率高,容易丢)
=====================================================================================
75. file
#目的:识别文件类型
#格式:file 文件名
#Linux下面一切皆文件,对于Linux下面我们都可以查看他们的文件类型
#file .bashrc
#file .vimrc
#file ~/Pictures/*
#file Videos/
#file /bin/pwd 为ELF格式的可执行文件
#file /dev/* 出现character special(字符设备文件),block special(块设备文件)
=====================================================================================
76. tar
#可用用来对多个目录、文件进行打包和压缩,tar本身不具有压缩功能,他是调用压缩功能实现的。
#“.tar”是一个文件打包格式,tar命令本身只用于打包或解包,tar本身没有压缩和解压缩的功能。
#tar常用的选项
#-c(create)表示创建用来生成文件包
#-x(extract)表示提取,从文件包中提取文件
#-t(list)查看压缩文件
#-z使用gzip方式进行处理,它与“c”结合就表示压缩,与"x"结合就表示解压缩
#-j使用bzip2方式进行处理,它与“c”结合就表示压缩,与"x"结合就表示解压缩
#-v(verbose)详细报告tar处理的信息
#-f(file)表示文件,后面接一个文件名
#-C(指定目录) 解压到指定目录
#1.tar打包、gzip压缩
#1)只打包不压缩
#tar cvf test.tar /etc 把目录/etc打包成test.tar
#2)打包的时候压缩
#压缩格式:tar -czvf 压缩文件名 目录名
#注意-czvf与czvf效果一样,推荐取消-
#例如,tar czvf dra.tar.gz /etc/ 把目录/etc/打包并压缩(gzip格式)成dra.tar.gz 注意命名规范
#查看格式:tar tvf 压缩文件名
#例如tar tvf dra.tar.gz
#解压格式:tar xzvf 压缩文件名 -C 指定目录
#例如tar xzvf dra.tar.gz
#例如tar xzvf dra.tar.gz -C /opt/share/
#2.tar打包、bzip2压缩
#3)打包的时候压缩
#压缩格式:tar -cjvf 压缩文件名 目录名
#注意-cjvf与cjvf效果一样,推荐取消-
#例如,tar cjvf dra.tar.bz2 /etc/ 把目录/etc/打包并压缩(bzip2格式)成dra.tar.gz 注意命名规范
#查看格式:tar tvf 压缩文件名
#例如tar tvf dra.tar.bz2
#解压格式:tar xjvf 压缩文件名 -C 指定目录
#例如tar xjvf dra.tar.bz2
#例如tar xjvf dra.tar.bz2 -C /opt/share/
#压缩的目的:在网络传递文件时,可以先将文件压缩,然后传递压缩后的文件,从而减少网络带宽。
#接受者接受文件后,解压即可。
#压缩的类型:有损压缩,无损压缩
#有损压缩:如mp4视频文件,即使压缩过程中,减少了很多帧的数据,对观看者而言,也没有影响。当然
#mp3音乐文件也是有损压缩。
#无损压缩:
#如普通文件的压缩,为了保证信息的正确传递,不希望文件经过压缩或者解压后出现问题。
#通过tar压缩的文件就是无损压缩
#单个文件的压缩(解压)使用gzip和bzip2
#多个文件和目录使用tar
#解压tar.xz文件 例如 tar xvJf linux-4.4.152.tar.xz
#Linux、Unix最新的软件通常以源代码打包形式发布,最常见的是.tar.bz2和.tar.gz两种压缩包格式。
#这两种格式的区别在于前者比后者压缩率更高,后者比前者压缩和解压缩花费时间更少的时间。同一个文件,
#压缩后.bz2文件比.gz文件更小,但要以花费更多时间为代价。两者都使用tar工具打包和解压缩。
=====================================================================================
77. gzip
#gzip只能压缩单个文件,不能压缩目录
#gzip常用的选项
#-l(list)列出压缩文件的内容 查看格式:gzip -l 压缩文件名 例如:gzip -l pwd.1.gz
#-K(keep)在压缩或解压时,保留输入文件
#-d(decompress) 将压缩文件进行解压缩
#解压格式:gzip -kd 压缩文件名 该压缩文件是一个以.gz结尾的单个文件
#如果gzip不加任何选项,此时为压缩,压缩完该文件会生成后缀为.gz的压缩文件并删除原有的文件。
#例如sudo gzip mypwd.1 所以推荐使用压缩格式:gzip -k 源文件名,来压缩原文件,得到一个.gz结尾的文件
#注意:相同的文件内容,如果文件名不同,压缩后的大小也不同。
=====================================================================================
78. bzip2
#压缩格式:bzip2 -k 源文件名,例如bzip2 -k mypwd.1 得到一个.bz2后缀的压缩文件
#参数-K(keep)在压缩或解压时,保留输入文件
#参数-d(decompress) 将压缩文件进行解压缩
#解压格式:bzip2 -kd 源文件名 例如bzip2 -kd mypwd.1.bz2
#如果bzip2不加任何选项,此时为压缩,压缩完该文件会生成后缀为.bz2的压缩文件并删除原有的文件。
#所以推荐使用压缩格式:bzip2 -k 源文件名,来压缩原文件,得到一个.bz2结尾的文件
#bzip2只能压缩单个文件,不能压缩目录
#压缩有两个参数:1)压缩时间 2)压缩比
#一般情况下,小文件使用gzip来压缩,大文件使用bzip2来压缩
=====================================================================================
79. 清空系统的版本和内核版本
#在登入Linux主机本地(非CRT连接)前,会显示系统的版本和内核,为了安全,可以通过清空来实现,
#清空方式如下:
#> /etc/issue或者cat /dev/null > /etc/issue
#删掉后可以新建个文件vi /etc/motd 放一下虚假信息提示迷惑攻击者。
=====================================================================================
80. chattr
#锁定文件
#为了安全可以锁定一些文件
#例如chattr +i /etc/passwd,文件passwd被锁定,不能添加用户,不能修改,不能移动,不能删除等。
#通过lsattr /etc/passwd可以看到属性里面加了i
#chattr -i /etc/passwd解除
======================================================================================
81. 注释掉不必要的用户
#进入/etc/passwd里面,以nologin结尾的都是不可登入的用户
#不需要的用户可以加#注释掉
#grep -v "nologin$" /etc/passwd 把除了nologin结尾的用户打印出来
#不要随便创建账号,容易受到黑客攻击
#黑客扫描一般只扫固定的一些端口,全部扫的话扫不过来
======================================================================================
82. grub
#linux的引导器
#Linux的启动过程要好好研究一下
#为grub菜单加密码的目的是防止他人修改grub做内核等启动设置,以及用单用的方式启动破解root
#密码等操作。实际上此步可以在安装系统的过程中设定。具体步骤如下:
#先用/sbin/grub-md5-crypt 产生一个MD5密码串$1$pj9k/0$ZfZKfuOa4PNqXEFpVs8Z2/
#password --md5 $1$pj9k/0$ZfZKfuOa4PNqXEFpVs8Z2/把这行语句加到/etc/grub.conf的第13行及第14行之间
#更改之后以后单用进入需要给内核加选项之类都需要这个密码,不知道就添加不了
======================================================================================
83. 禁用ping
#echo "net.ipv4.icmp_echo_ignore_all=1" >> /etc/sysctl.conf 添加
#sysctl -p 使其生效
#改为回来需要把net.ipv4.icmp_echo_ignore_all=1语句删除,sysctl -p,再重启机器才会生效
#工作中都是通过防火墙来让别人ping不了,让自己可以ping来实现
======================================================================================
84. 软件漏洞升级
#例如yum install openssl openssh bash -y
======================================================================================
85. 下载地址换成国内镜像
#https://opsx.alibaba.com/mirror到阿里云镜像找到CenOS 点击右侧的帮助按钮,复制CentOS 6
#下面的这条命令wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
#到命令行执行即可
#切换到目录cd /etc/yum.repos.d下执行对比vimdiff CentOS-Base.repo*,发现下载地址被换成了阿里云
======================================================================================
86. wget
#下载的意思,把这个内容下载到什么地点
#-O file指定下载到指定的文件
#-spider 爬虫,检查网站是不是好的,不会下载
#-T --timeout=seconds 超时时间
#--tries=2指定重试的次数
#-q --quiet安静的下载
======================================================================================
87. ps
#显示当前系统中由该用户运行的进程列
#-ef 查看所有进程及其PID(进程号)、系统时间、命令详细目录、执行者等
#-aux 除了可显示-ef所有内容外,还可以显示CPU及内存占用率、进程状态
#-w显示加宽并且可以显示较多信息
======================================================================================
88. locate
89. export
90. netstat(ss)
======================================================================================
91. ifconfig
#查看当前系统活跃的网卡,默认不显示没有激活的网卡
#-a查看当前系统所有的网卡,包括没有激活的网卡。
#ifconfig eth0 192.168.1.101/24 临时配置网卡IP,临时的意思是不会永久保留,网卡重启IP就还原了
#ifconfig eth0 192.168.1.101 netmask 255.255.255.0 临时配置网卡IP
#service network restart 重启网卡,一重启你的临时网卡信息可能就被重置,
重启网卡需要关闭守护进程 service NetworkManager stop
#要想永久修改网卡信息需要修改/etc/sysconfig/network-scripts/ifcfg-eth0文件
1 DEVICE=eth0
2 HWADDR=00:0c:29:1c:ac:c3 这个是mac地址
3 TYPE=Ethernet 网卡类型为以太网协议网卡
4 UUID=fc5ac416-0679-4614-88e8-c72927f8ea6b
5 ONBOOT=yes 设置为yes表示开机(reboot)/重启网络服务(service network restart)的时候就激活网卡
6 NM_CONTROLLED=yes 网卡的守护进程,运行在后台,为你提供服务的,用来守护着网络这个服务,有啥用,你一改网卡的配置文件立即帮你生效,最后不启动这个服务,会影响你的配置
7 BOOTPROTO=dhcp 获取ip地址的方式为从dhcp服务器上获取,如果是静态就写static
8 #IPADDR=192.168.1.103 如果是静态static就把注释的部分打开
#NETMASK=255.255.255.0
9 #DNS2=192.168.0.10
10 #DNS1=8.8.8.8
11 #GATEWAY=192.168.1.1
12 USERCTL=no
13 PEERDNS=yes
14 IPV6INIT=no
service network status 查看当前网卡的状态
======================================================================================
92. source
93. sudo
#调兵的虎符,sudo配置文件授权之后,执行命令前需要带sudo
94. whereis
======================================================================================
95. less
#查看命令,展示一屏,回车一行一行往下找,空格向下一屏,PageUp及PageDown翻屏
#支持查找:/要查找的内容,用cat查找不会停留,一路展示到结尾
#支持向上,通过q键退出
======================================================================================
96. more
#与less相反
#查看命令,展示一屏,回车一行一行往下找,PageUp及PageDown不支持。箭头也不起作用。
#只能往下,不能往上,功能少,没有less好用,比较鸡肋。
======================================================================================
97. 目录结构
#/存放系统相关的程序,也就是AT&T开发的Unix程序
#/usr 存放Unix系统商(比如IBM和HP)开发的程序。可以理解为user。不用太纠结。
#/usr/local存放用户自己安装的程序,相当于c:/program files。一般编译软件的时候默认路径。
#/opt 在某些系统,用于存放第三方厂商的程序,所有取名为option,意为“选装”。
# df 目录 可以查到这个目录属于哪个磁盘哪个分区 例如df /sbin/
#FHS(Filesystem Hierarchy Standard) 目录层次标准
#第一层
#/etc目录下放置系统的配置文件
#/bin放置命令
#/sbin放置系统命令,普通用户用不了,root才能用,更改系统东西的。
#第二层
#针对/usr(unix software resource|Secondary hierarchy)和/var(variable data)这两个目录的
#子目录来定义。
#例如/var/log 放置系统日志文件等
=====================================================================================
98. kill
#杀死进程
#进程终止
#kill PID 用PID的方式杀死进程,精准的杀法
#pkill 进程名 这种杀法比较泛,只要叫这个名字都可以杀掉
=====================================================================================
99. chmod
#改变文件的访问权限
#文件的访问权限可表示成:-rwx rwx rwx.从左到右对应三个不同的用户级别:文件拥有者(u)
#所属的用户组(g)和系统的其他用户(o)
#对于第一种符号连接方式的chmod命令中,用加号“+”代表增加权限,用减号“-”删除权限
#chmod u+w oldboy.txt
#chmod o+rw u-boot-2010.06 -R 目录下的所有文件全部增加权限,-R为递归
#chmod u=rwx oldboy.txt 直接赋值来得更快捷,直接覆盖过去
#chmod o=- fun.c 其他用户对文件fun.c没有任何权限与这个chmod o=--- fun.c等价
=====================================================================================
100. ln
#为某一个文件在另一个位置建立一个符号链接。
#当需要在不同的目录用到相同的文件时,Linux允许用户不用再每一个需要的目录下都存放一个
#相同的文件,而只需将其他目录下文件用ln命令链接即可,这样就不必重复地占用磁盘空间。
#-s建立符号链接
#ln -s /data/scripts/oldboy.sh /data/oldgirl123.sh 这里/data/scripts/oldboy.sh是实际存在
#的文件,/data/oldgirl123.sh是软链接文件,可以新创建。
#不论是源文件还是软链接内容有改变,大家都跟着一起变,这是所谓的同步性
#软链接就是上面所说的ln -s ****,它只会在用户选定的位置生成一个文件的镜像,
#不会重复占用磁盘空间,平时使用较多的都是软链接;
#硬链接是不带参数的ln ****,它会在用户选定的位置上生成一个和源文件大小相同的文件
#无论是软链接还是硬链接,文件都保持同步变化
======================================================================================
101. /etc/sysconfig/network-scripts/
#通过setup图形配置网卡其实配置的参数是保存在这个目录下的对应网卡文件的
#例如配置的是eth0就配置ifcfg-eth0这个文件
#网卡配置完后重启网卡才能生效 方法一 /etc/init.d/network restart 注意:使用这条命令要保证配置文件里面的ONBOOT=yes
#方法二 ifdown eth0 && ifup eth0 先停止再启动,两个&&符号表示down成功了再up
#ifcfg-eth0这个文件里面的参数解释:
#DEVICE=eth0 设备物理名,eth1表示第1块网卡
#HWADDR=00:0c:29:1c:ac:c3网卡的mac地址,48位
#TYPE=Ethernet以太网
#UUID=fc5ac416-0679-4614-88e8-c72927f8ea6b唯一的用户标识,相当于身份证一样
#//比如通过blkid可以看到磁盘的UUID
#/dev/sda1: UUID="d1647f2a-0b88-4007-a4f1-3af441c375b5" TYPE="ext4"
#/dev/sda2: UUID="94deec67-3e6e-4606-83c0-3e5165207082" TYPE="swap"
#/dev/sda3: UUID="bb2293d4-8060-43a0-bb27-7f1e03f53ef3" TYPE="ext4"
#需要注意:克隆的系统要删掉HWADDR及UUID,系统没有帮你删掉,要不然你改成别的也行
#ONBOOT=yes意思是开机这个网卡随着计算机启动
#NM_CONTROLLED=yes网络管理相关,不太重要
#BOOTPROTO=dhcp引导协议,取值可以是static(静态分配地址);bootp(使用BOOTP协议);dhcp(使用DHCP协议);none(不使用协议)。
#//也就是说你把你的网卡接到网络里面你是怎样获取IP的
#IPADDR=10.0.0.7//配置IP地址,在静态分配模式下配置IP地址
#NETMASK=255.255.255.0 在静态分配模式下配置子网掩码
#DNS2=202.106.0.20//域名解析,解析与反解析
#DNS1=8.8.8.8
#GATEWAY=10.0.0.254//大家都从网关出去,出口
#USERCTL=no
#PEERDNS=yes
#IPV6INIT=no
#blkid 查看系统磁盘的UUID
======================================================================================
102. /etc/resolv.conf
#DNS配置文件,CentOS6只是一个辅助的配置,因为在/etc/sysconfig/network-scripts/ifcfg-eth0里面已经有DNS的配置
#需要注意的是,ifcfg-eth0里面的配置优先于resolv.conf
#DNS的客户端文件是哪个:只能说是resolv.conf,不过ifcfg-eth0里面也可以配
#[root@book ~]# cat /etc/resolv.conf
#; generated by /sbin/dhclient-script
#search DHCP HOST
#nameserver 192.168.0.8
#nameserver 192.168.0.10
#CentOS6在resolv.conf添加额外的DNS服务器,/etc/init.d/network restart后会清掉
#如果对resolv.conf不熟,可以man,man可以看命令,也可以看配置文件
#注意:setup中DNS配置的内容会保存到resolv.conf中
#重启网卡/etc/init.d/network restart后resolv.conf中增加的内容会被清掉,感觉是centos6.6的一个bug,生产环境
#建议在ifcfg-eth0里面配DNS
======================================================================================
103. showmount 用于查询NFS服务器的相关信息
#show mount information for an NFS server
#-e show the NFS server's export list
#-a List both the client hostname or IP address and mounted directory in host :dir
======================================================================================
104. ifdown eth0 ifup eth0
#重新加载网卡配置文件,与service network restart功能类似
======================================================================================
105. unzip
解压zip文件
unzip ortp-master.zip
======================================================================================
105. exit
#退出当前终端,CRT中表现为logout
======================================================================================
106. who
#显示登入过终端的用户
======================================================================================
107./etc/passwd文件的解释
less /etc/passwd
这个文件的一行就代表一个用户
这一行中是以冒号为分隔符的,分成七段
用户名 用户密码 用户ID 组ID 用户描述信息 用户家目录 登入成功后执行的第一条命令
root : x : 0 : 0 : root :/root :/bin/bash
这里密码全部用x代替,为了安全起见,如果这个文件泄露,整个系统的权限就全部泄露
没有x密码占位符说明没有密码
所以说鸡蛋不能放在一个篮子里面,这里放x的意思是说我是有密码的,这里用x代替,只不过
我不往这里写而已。
用户ID为0,说明权限最高,老大,user ID为0的就有root权限
ID号也有讲究,1000以前的都被系统占用了,1000以后的才是普通用户,所以我们建的普通用户
都是从1000往后,1000以前的都是高管级别的,
组ID ,group ID
用户描述信息:可以随便写
只要是/bin下面的bash说明就可以登入操作系统,nologin说明不能登入系统
最后一项是登入成功后执行的第一条命令
我们还发现还有/usr/sbin/nologin的,
bin:x:2:2:bin:/bin:/usr/sbin/nologin
也可以把普通用户的uid改为0,就变成了root用户了
面的bash说明就可以登入操作系统,nologin说明不能登入系统
最后一项是登入成功后执行的第一条命令
我们还发现还有/usr/sbin/nologin的,
bin:x:2:2:bin:/bin:/usr/sbin/nologin
也可以把普通用户的uid改为0,就变成了root用户了
======================================================================================
108. /etc/shadow
用户名 用户密码(非明文)
======================================================================================
109. /etc/group
组名 组密码 组ID 组成员
book:x:1000:
book用户就是在book组里面,只不过组名和用户名是一样的
组是建用户的时候附带建起来的
组成只有book,省略不写
把用户tao加入book用户组
修改/etc/group
book:x:1000:tao
root@ubuntu:~# id tao
uid=1001(tao) gid=1001(tao) groups=1001(tao),1000(book)
tao即在tao组里面,又在book组里面,用户tao和,组tao没有任何关系
======================================================================================
110. usermod
usermod -aG tao book 把book用户加到tao这个组里面来
======================================================================================
111. chown
用法:chown 属主.属组 文件/目录
chown root.root a.txt 把文件a.txt的属主和属组都改为root
chown tao tao.txt 把文件a.txt的属主改为tao
chown tao. tao.txt 把文件a.txt的属主和属组都改为tao
chown .tao tao.txt 把文件a.txt的属组改为tao
======================================================================================
112. touch /test/{1..9}.txt
一次性新建1.txt 2.txt ... 9.txt
======================================================================================
113. /etc/gshadow 组密码文件
======================================================================================
114. /home/
新建的用户在/home/下面有对应的目录
======================================================================================
115. 查看一个用户在系统中是否存在的两种方法
(1)id 用户名
(2)tail -1 /etc/passwd
======================================================================================
116. 新建一个用户会出现哪些文件
(1)ls /et/passwd
(2)ls /etc/shadow
(3)ls /etc/group
(4)ls /etc/gshadow
(5)ls /var/spool/mail/
(6)ls /home/test/
======================================================================================
117. 文件夹权限的解释
可读权限r:从windows的角度意味着我双击文件夹是可以看到文件夹里面的内容,对应Linux来说就
是ls可以看到目录下面的内容。
可写权限w:在这个目录下可以新建文件,删除文件,重命名文件
======================================================================================
118. Linux系统的启动顺序
bios->mbr->grub->kernel->init
bios:
mbr:512B 前446是引导信息,后64B是分区信息,最后2B是标志位
grub:是一个bootloader grub的配置文件在/etc/grub.conf下面
grub.conf下面可以有多个title,一个title就是一个内核,可以指定从哪个title启动
kernel: 内核
init: 内核的第一个应用程序,init这个应用程序把操作系统分成七个级别0~6
其中0和6这两个级别是不能被设置为开机启动级别的,可以查询/etc/inittab来了解没有级别代表什么意思
还可以了解到你默认开机进的是哪个级别
======================================================================================
119. free
用来查询内存的使用情况
交换分区Swap使用为0代表内存还够用。
total used free shared buffers cached
Mem: 1906492(总内存,单位为KB) 150516(已经分配出去的buff/cache) 1755976(未分配的内存) 220(共享内存) 9244(已经分配但是还未使用的buff) 36096(已经分配但是还未使用的cache)
-/+ buffers/cache: 105176(已经分配并且被使用的buffer和cached总数) 1801316(总共未使用的内存,这个值应该等于1755976+9244+36096)
Swap: 524284 0 524284
150516=105176+9244+36096
内存真实的使用率:105176/1906492
bufers:用来缓解硬盘和内存的速度差,把硬盘的零散的数据不断的往内存里面放,形成一个大数据然后一次性处理。
cached:用来缓解CPU和内存之间的速度差,把CPU经常去调的数据放在cached里面,再次再来调直接从cached取就OK了。
=======================================================================================
120. ps
ps aux 查看操作系统中所有正在运行的进程,
ps aux | grep 'bash'|grep -v 'grep'
=======================================================================================
121. pgrep
pgrep bash 过滤进程bash对应的PID
=======================================================================================
122. 磁盘的相关概念
磁盘上面的一圈叫做磁道
磁道上面的一小段弧叫做扇区,一个扇区是512B
一台电脑可以插多块硬盘,第一块硬盘叫sda,sd(SATA)代表硬盘的接口,a代表第一块硬盘,第二块硬盘叫sdb。
sda1代表第一块硬盘第一个分区,
[root@book ~]# ls /dev/sd
sda sda1 sda2 sda3 这台机器总共有sda这么一块硬盘,并且这块硬盘被分成了sda1 sda2 sda3三个分区
[root@book ~]# ll /dev/sda
brw-rw----. 1 root disk 8, 0 Jun 20 16:48 /dev/sda b表明这是一个设备文件
=======================================================================================
123. fdisk -l /dev/sda
Disk /dev/sda: 8589 MB, 8589934592 bytes 硬盘名叫sda,硬盘大小为8GB
255 heads, 63 sectors/track, 1044 cylinders 有255个磁头,63个扇区,1044个柱面
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes 扇区大小为512B
I/O size (minimum/optimal): 512 bytes / 512 bytes 硬盘IO大小
Disk identifier: 0x000146bd 硬盘的标识
Device Boot Start End Blocks Id System
/dev/sda1 * 1 26 204800 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 26 91 524288 82 Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3 91 1045 7658496 83 Linux
应用程序要想操作硬件,需要通过操作系统,操作系统级别操作的是文件,
不建主分区是可以的,但是你要明白,只有主分区才能安装系统,可以作为启动分区,
硬盘建完分区以后要格式化,实际上叫做格式化建立文件系统
一个裸盘就相当于没有打隔断的一空毛坯房,分区就是把卧室、厨房、卫生间用墙隔起来,我们叫打隔断,
格式化(制作文件系统)就叫装修(同时要放上卧室,厨房,卫生间应该有的东西),
======================================================================================
124. mkfs.
格式化
[root@book ~]# mkfs.
mkfs.cramfs mkfs.ext3 mkfs.ext4dev mkfs.vfat
mkfs.ext2 mkfs.ext4 mkfs.msdos
widows中每一个分区都有一个文件系统,比如NTFS
mkfs.ext4 /dev/sdb1 把分区sdb1格式化为ext4文件系统
扩展分区不能格式化
/dev/sdb1是操作系统级别跟硬盘的一个物理设备的映射,对你来说sdb1就是一个硬件设备,
目录只是一个入口而已(一个水管而已)
硬盘在操作系统级别是block,在硬盘级别是扇区
硬盘格式化完成后,一个分区中的block块分成两部分,一部分是数据block,另一部分是inode block
inode block用来存放文件的原数据,这些原数据包括文件的权限信息、属主属组、文件大小、文件创建日期、文件名
[root@book ~]# ls -i install.log 查看文件install.log的编号
130054 install.log
[root@book ~]# df -i 查看每个分区的inodes信息
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda3 479552 54828 424724 12% /
tmpfs 238311 1 238310 1% /dev/shm
/dev/sda1 51200 38 51162 1% /boot
硬盘满有两种形式:1.文件的实际大小把硬盘占满了; 2. 文件的Inodes号满,即使是空的文件好
====================================================================================
125. ls -i
查看inode号
====================================================================================
126. fdisk /dev/sdb
硬盘分区
====================================================================================
127. route -n
查看网关信息
[root@book ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
你要往这个网段192.168.1.0 去发包,0.0.0.0表示没有网关
你要往这个网段169.254.0.0 去发包,0.0.0.0表示没有网关
你要往这个网段0.0.0.0(表示所有地址),都把包交给192.168.1.1网关
====================================================================================
128.ping
ping -c 10 192.168.1.100 -c 10表示ping10次
====================================================================================
129.arping -I 192.168.1.100 eth0
130.route add default gw 192.168.1.1
临时添加网关,永久添加只能在配置文件里面写