linux入门级知识回顾
ifdown eth0 #关闭网卡eth0 ifup eth0 #启动网卡eth0 ifconfig #查看网络配置 :wq 保持并退出 :q 退出 :q! 强制退出不保存 :wq! 强制退出并保存 echo hello oldboylinux >>/data/oldboy.txt >> 追加重定向 把内容放在文件的最后一行 ##方法3-想向这个文件中放入多行 cat >>/data/oldboy.txt<<EOF I am studying linux EOF EOF === end of file ##漏斗家族 重定向符号 #> 1> 标准输出重定向 先把文件的内容清空 把内容放在文件的最后一 行 #>> 1>> 追加重定向 把内容放在文件的最后一行 1 标准输出 执行正确的内容才会通过漏斗 #2> 标准错误重定向 #2>> 错误追加重定向 getenforce 查看selinux状态 grep '=disabled' /etc/selinux/config #查看config中的 =disabled /etc/init.d/iptables status #查看防火墙配置 /etc/init.d/iptables stop #关闭运行中的防火墙(建议关闭两次) chkconfig |grep ipt # chkconfig表示查看启动项 grep 是过滤的关键字 ipt是过滤的关键词 chkconfig iptables on #关闭某个程序开机自启 乱码原因:1、是linux系统的问题 2、远程连接工具的问题,比如xshell的问题 echo $LANG #查看linux系统的字符集 export LANG=zh_CN.UTF-8 #临时改字符集 cat /etc/sysconfig/i18n #编辑这里永久改字符集 source /etc/sysconfig/i18n #让刚刚改的配置生效 df -h # 查看磁盘状态 挂载小结: linux中 一切皆文件 linux(设备/磁盘分区)不挂载无法使用 挂载相当于给磁盘分区/设备开了一个入口 通过入口进入到光盘/磁盘的分区中 入口==挂载点==目录 yum install tomcat #安装软件 相关目录的了解,详情看截图,红色为必须了解的 cat /etc/sysconfig/network-scripts/ifcfg-eth0 #查看网卡信息 DEVICE=eth0 #网卡名 HWADDR=00:0c:29:e7:59:14 #mac地址 TYPE=Ethernet #互联网 UUID=51d0a025-779b-447f-9a48-f3935caa8d89 #唯一标示 ONBOOT=yes #重启的时候是否否开启网卡 (6.7之后才有的设置?) NM_CONTROLLED=yes #能否被network软件进行管理 BOOTPROTO=none #网卡获取ip地址的方式 #none/static #ip值是固定的 #dchp 自动获取ip地址 USERCTL=no #是否允许普通用户管理(开 关 重启等管理动作)网卡 PEERDNS=yes #网卡的dns配置优先级高于dns的配置 IPV6INIT=no IPADDR=10.0.0.200 # ip地址 ip address NETMASK=255.255.255.0 #子网掩码 GATEWAY=10.0.0.2 #网关 DNS1=223.5.5.5 DNS2=223.6.6.6 DNS 域名解析服务/系统 ,作用:把使用的域名转换为ip地址 resolve host 解析 域名 DNS 有问题的表现为:ping www.baidu.com 这种域名ping不通,但是ping得通ip地址 解决:在网卡的配置最后加 DNS1=223.5.5.5 DNS2=223.6.6.6 ifdown eth0 && ifup eth0 # 重启某一个网卡 /etc/init.d/network restart # 重启所有的网卡 cat /etc/resolv.conf #DNS的默认配置,一般配置网卡的DNS就OK
--new190612 一切从根开始,一切从目录开始 linux快捷键 1、ctrl + c 取消当前操作 2、ctrl + l(小写字母L) 清屏 3、ctrl + d 退出当前用户/登出 4、etc + .(点) 使用上一个命令的最后一个东西(一般是个路径之类的) vi/vim 快捷键 删除光标所在位置的内容到行尾 D 移动光标: 移动到文件的第一行 gg 移动到文件的最后一行 G 编辑: 在当前行的下一行插入一个空行并进入到编辑模式 o(小写字母O) hostname # 查看主机名 hostname simon003 #主机名改成simon003 ,临时改,重启后失效 cat /etc/sysconfig/network #永久改,重启后生效 ll -a #查看所有文件(包括隐藏文件) df #查看磁盘空间情况 df -h #以人类可读的方式展示 cat /etc/fstab #跟自动挂载有关 结果集的第一列表示设备/分区 结果集的第二列表示入口/目录 cat /etc/rc.local #开启的时候自动运行的文件,需要开机自启的软件/命令/服务都放在这个文件中 #还有个方式是 chkconfig管理 开机自启动项目 cat /etc/inittab #开机的时候运行级别的配置文件 0 关机状态,不要把运行级别设置为0 1 单用户模式,root用户密码忘记了 2 多用户模式,但是没有NFS 3 完全的多用户模式,命令模式,文本模式 4 未使用 5 x11,桌面模式,图形化界面模式(前提是安装了这些文件) 6 重启模式,不要把运行级别设置为6 runlevel #查看当前的运行级别 init 5 #临时把运行级别改成5 #永久修改在 /etc/inittab 这个文件的最后一行,一般不会改 /etc/init.d #服务管理的命令 # 国法(全国各地生效) cat /etc/profile 系统环境变量 别名 cat /etc/bashrc 别名 #家规(地方政策,当前用户生效) ~/.bashrc ~/.bash_profile .(点)开头的文件表示默认隐藏的文件 ~表示当前用户的家目录 root用户 ~ ===== /root simon ~ ===== /home/simon /usr/local #编译安装的软件默认的位置 linux安装软件的方法 1、yum (自动解决安装依赖的软件) 点外卖-缺少的外卖一切给解决 软件包管理工具 yum install tree -y (碰到询问默认都是yes) 2、rpm (缺少的锅之类的得自己解决) 速冻水饺-半成品 3、编译 买菜切菜------炒菜-----上菜 ./configure---make------make install rpm -qa |grep tree #查看安装的所有软件,名字中带 tree的 /var/log/messages #查看系统默认日志信息 /var/log/secure #系统用户的登录信息(谁 什么时候,从哪里登录的 是否成功) grep "Accepted" /var/log/secure #根据关键字捞日志中的信息 free #查看系统内容 free -h #人类可读 lscpu #查看系统cpu的状态 w #查看系统的负载程度,越繁忙越接近系统的核数 cat /proc/loadavg # 左边的三个数,最近一分钟,最近五分钟,最近十五分钟 的平均负载
linux启动过程
--new190612 环境变量 1、大写 2、在系统大部分地方都可以使用,含义相同。 LANG字符集 PS1(命令行的样子) PATH 放的是命令的路径/位置 echo $PATH #查看当前路径的值,一般不会改,/etc/profile中永久改 rpm rpm包管理工具 rpm -qa | grep tree #查看某个软件是否安装 rpm -ql tree #查看这个软件包里有啥,查看陌生软件的用法,结构之类的 find 查找文件 -maxdepth 最大的深度 -type 找什么类型的 f file 文件 d directory 目录 -name 什么名字 ! 取反 tree 以树形显示目录结构 -L 最多显示基层目录 -d 只显示目录 ls list 列表 显示目录里面的内容 -l 显示详细信息 -F 给不同的类型文件加上不同的尾巴 目录/ touch 摸 创建文件 更新文件的时间戳 ###第 1 题 如何过滤出已知当前目录下 oldboy 中的所有一级目录(提示:不包含 oldboy目录下面目录的子目录及隐藏目录,即只能是第一级目录)? 几种方法(在oldboy这个目录下执行): tree -Ld 1 find -maxdepth 1 -type d find -maxdepth 1 -type d ! -name "." # !取反,不含.(点)文件 ls -l # 查看 ls -l |grep "^d" #d开头的就是文件夹(目录)
--new190615 cd - ==== 进入上一次所在的目录 cd . ==== 进入当前目录 cd ..==== 进入当前目录的上一层目录 cd ~ ==== 进入当前用户的家目录 (root用户) ~ ==== /root用户 (普通用户) ~ ====/home/ cd ==== cd ~ ls list 列表 显示目录里的内容 ls -l 显示详细信息 ls -F 给不同类型的文件加上不同的尾巴 目录/ ls -r 倒序 ls -t 按照文件的修改时间进行排序 ls -lrt 按照文件的修改时间进行倒序排序 tail 取文件的最后几行 默认是最后10行 tail -f 显示文件的实时更新 tailf 同上 查看文件时显示文件的行号 1.cat -n simon.txt 2.vim simon.txt :set nu 显示行号number :set nonum 不显示行号number 3.grep -n "." simon.txt # .点表示任意一个 正则 ("stu"表示找stu开始的) grep -v 排除 -A 显示grep过滤出的内容及接下来的几行 -n 给grep出的行加上行号 egrep === grep -E 高级正则 chkconfig 管理开机自动运行的软件 chkconfig iptables on chkconfig iptables off chkconfig --level 5 iptables on 设置某个运行级别 tar zcvf /tmp/etc.tar.gz /etc/ z --通过gzip 工具进行压缩 c --表示create 创建压缩包 v --表示verbose 显示执行过程 f --表示file 接上压缩包的名字 tar ztf /tmp/etc.tar.gz #查看压缩包的内容 t --表示list 显示压缩包的内容 解压:解压前必须先进入到要解压到的目录(linux默认解压到当前目录) 简写: tar zcf 创建 tar tf 查看 tar xf 解压 wc -l /etc/services #查看文件有多少行 ps -ef 显示系统有多少在运行的进程 ps -ef | grep "sshd" #同样可以通过grep的方式进行关键字查找 单引号:所见即所得 双引号:里面的特殊字符会被解析 inode与block小结: 1、格式化创建文件系统 2、在同一个文件系统(分区),两个文件的inode相同,则互为硬链接 3、创建一个非空文件要占用一个inode和至少一个block 4、如何查看inode和block的使用情况 df -i df -h df -i #查看总共多少个inode 磁盘空间不足排查: df -h du -sh /*|grep G # 找大文件 文件类型 f file 普通文件 d directory 目录 l softlink 软链接(快捷方式) linux下的扩展名是用来看的,不影响实际使用 .sh 脚本文件 .conf 配置文件 UID user id 用户的id号码==身份证号码 GID group id 用户组的号码==户口本的号码 UID 1.皇帝 root 0 2.傀儡 虚拟用户 1-499 系统中每个进程都要有一个对应的用户,无法使用的。 3.平民百姓 普通用户 500+ 如何保护皇帝 1.禁止root远程登录 2.修改ssh默认的端口号22 3.定期分配/var/log/secure 记录着用户的登录信息 与用户有关的文件 /etc/passwd 存放的是用户的信息 /etc/shadow 用户密码的信息 /etc/group 用户组的信息 root:x:0:0:root:/root:/bin/bash simon:x:500:500::/home/simon:/bin/bash 第一列:用户名 第二列:(以前)存放密码的地方 第三列:UID 第四列:GID 第五列:用户的说明信息,默认为空 第六列:用户的家目录 第七列:用户使用的shell,用户使用的命令解释器 /bin/bash ------- centos默认的命令解释器 /sbin/nologin --- 用户无法登陆系统,相当于是傀儡用户 linux基础权限: r read 可以读取内容 w write 修改文件内容 x excute 可以运行文件(命令 脚本) - 什么权限都没有 ls -l /etc/hosts - rw- r-- r--. 文件类型 主人 家人 陌生人 420 400 400 6 4 4 ls -l /bin/ls -rwxr-xr-x. 421401401 7 5 5 软连接(windows下的快捷方式): 创建: ln -s oldboy.txt oldboy.txt-soft #创建 ls -l oldboy.txt* #查看 特点: 1、存放着源文件的位置 2、源文件被删除时再查看会显示出红色 3、节约时间 硬链接 相当于是超市的前后门,通过不同的大门进入超市 在同一个分区中,两个文件的inode相同,则互为硬链接 创建: ln oldboy.txt oldboy.txt-hard #创建 ls -lhi oldboy.txt* #查看 特点: 1、相当于是超市的前后门,硬链接数量就是超市一共多少门 2、删除硬链接或者源文件,文件还是可以使用的 3、把硬链接和源文件都删除,则意味着文件被删除===硬链接数量为0 文件删除原理: 1.删除这个文件相关的硬链接 -rm ---删除厕所所有的入口 2.这个文件的进程调用数也为0 --- 没有人在使用厕所 1.硬链接数量为0 2.进程调用数为0 某个文件没有被彻底删除,导致磁盘空间不足 解决:重启对应的软件 找出硬链接数量为0,进程调用数不为0的文件 lsof |grep delete # 解决:重启对应的软件/服务 磁盘空间不足排查: 1.block满了--500G的空间存放505G的视频 2.inode满了,有大量的小文件 3.block 硬链接数量为0,进程调用数不为0,文件没有被彻底删除 stat oldboy.txt # 查看文件的三个时间 ctime changetime 文件的属性发生改变 硬链接数量,文件大小,文件权限等 mtime modifytime 修改时间 文件内容的变化时间 atime accesstime 访问时间(看一遍就算,cat都算,后来变成,有内容改变才算)
通配符和正则
-- 190619 history | grep cat # 历史命令 通配符: 1、* 所有 find /oldboy/ -type f -name '*old*' # 相当于sql的like中的% 2、{} # c生成序列 echo {0..100} # 连续生成1-100 echo stu{01..100} # 连续生成1-100 cp oldboy.txt{,.bak} # 备份 #1]正则表达式是用行进行过滤的 #2]禁止使用中文符合 #3]给grep和egrep配置别名 #配置别名 cat >>/etc/profile<<EOF alias grep='grep --color=auto' alias egrep='grep --color=auto' EOF source /etc/profile #生效 cat -A simon.txt # 把每行的结束以$展示出来 正则表达式与通配符区别: 通配符:用来匹配查找文件名 支持:大部分命令都支持 正则:在文件内容中匹配查询内容 支持:linux三剑客 正则: 基础正则(basic regular expression)BRE grep sed ^ $ . * [] [^] 扩展正则(extended regular expression)ERE | + {} () ? 以下是准备的环境: I am oldboy teacher! I teach linux. I like badminton ball ,billiard ball and chinese chess! my blog is http://oldboy.blog.51cto.com our site is http://www.etiantian.org my qq num is 49000448. not 4900000448. my god ,i am not oldbey,but OLDBOY! start: 0.1] ^ 以什么什么开头 0.2] $ 以什么什么结尾 . 任意一个字符,不包括空行 grep '.' simon.txt # grep -o '.' simon.txt # -o 正则的执行过程 grep '\.$' simon.txt # 以点结尾的行 \ 是转义符 6] * 前一个字符连续出现了0次或1次以上 grep -o '0' simon.txt # 出现的是7行的0 grep -o '0*' simon.txt # 把0连续起来 两个问题: 1.为何取出的是000 而不是00和0 0 0 0 #因为正则在表示连续出现的时候表现出贪婪性 有多少吃多少 有多少匹配多少 2.为何使用'0*' 会把整个文件的内容都显示出来 因为出现0次或1次以上的都会显示 7] .* (点*) 所有字符 所有符号 所有 grep '^m.*m$' simon.txt # 以m开头,以m结尾 .* 中间是任意字符 8] [] 中括号 [abc] 相当于是一个字符 找出包含a或b或c的行 grep '[abc]' simon.txt # 找出含或a或b或c的行 grep '[a-zA-Z0-9]' simon.txt # 找出任意字母或者数字的 grep '[^abc]' simon.txt # 排除,即不要a,不要b,不要c的 扩展正则 1】 + 前一个字符连续出现了1次或多次 grep -E '0+' simon.txt # grep 不支持扩展正则,egrep 即 grep -E支持扩展 1.可以把连续的东西用正则取出来 2.一般与[]配合 2】 | 或者 grep -E 'a|b|c' simon.txt grep '[abc]' simon.txt # 找出含或a或b或c的行 | 与 [] 本质区别: 1、[] 是基础正则 | 是扩展正则 2、[] 中括号表示的是单个字符的或者 | 单个多个都可以,兼容[] eg:grep -E 'linux|python' simon.txt linux或者python的都ok 3】 () 1.括号中的内容是一个整体 2.后向引用(反向引用)(用的不多,意义初级不大,配合sed使用) grep -E 'oldb(o|ey)' simon.txt # 找出oldboy 或者 oldbey 的行 4】 {n,m} 前一个字符连续出现了至少n次,最多m次 grep -E '0{2,5}' simon.txt # 2~5次的 grep -E 'l{2,}' simon.txt # 出现最少2次的 grep -E 'l{2}' simon.txt # 出现正好2次的 grep -E 'l{,2}' simon.txt # 出现最多2次的 grep -E '[0-9]{8,}' simon.txt # 出现连续8个数字的 grep -E '[0-9]{8,}' -o simon.txt # 出现连续8个数字的 ,只显示数字内容 5】 ? 连续出现0次或1次 vim simontemp.txt i gd god good goood gid gpd giid grep -E 'go?d' simontemp.txt # 查找o出现了一次或0次的结果是gd和god grep -E 'go*d' simontemp.txt # 查找出现0次或1次+的 支持基础正则 基础+扩展正则 grep egrep === grep -E sed sed -r awk awk \ 撬棍(转义字符) 可使得基础命令也能使用扩展正则 #帮助命令 man grep man info
1.取ip地址 ifconfig eth0| awk 'NR==2' #第二行 ifconfig eth0|awk 'NR==2'|awk '{print $2}'|awk -F":" '{print $2}' # -F 指定分隔符为: ifconfig eth0 |awk 'NR==2{print $2}'|awk -F"[: ]+" '{print $2}' # 另一种方式 awk '找谁{干啥}' ifconfig eth0 | awk -F "[: ]+" 'NR==2{print $4}' # 精简版 ifconfig eth0 |awk 'NR==2'|awk -F"[: ]+" '{print $4}' echo '####1@@@@@2' | awk -F "[@#]+" '{print $2}' 2.查看文件的权限 stat /etc/hosts | awk -F "[(/]" 'NR==4{print $2}' stat -c%a /etc/hosts 3.排除文件中的空行 grep -v '^$' test.txt # - v取反 awk '!/^$/' test.txt # awk的取反 ! sed '/^$/d' test.txt # d 删除delete 4.取文件的前两行 (默认内容已知) 0.grep -E '[23]' s1.txt #找出含有2或者3的行 1.awk '/[23]/' s1.txt #找出含有2或者3的行 awk 'NR==3' s1.txt # 找第三行的数据 awk 'NR==2,NR==3' s1.txt # 第二行到第三行的数据 2.sed -n '1p' s1.txt #第一行 sed -n '2,4p' s1.txt #2-4行 sed -n '10,$p' s1.txt #10行到最后一行,$是最后一行 5.创建文件夹 mkdir /simon ls -ld /simon/ #查看硬链接数是2 ls -ld /simon/. #查看硬链接数是2 .点表示当前目录 mkdir -p /simon/test #再创建一个子目录 ls -ld /simon/ /simon/. #此时,查看硬链接数是3 ls -ld /simon/ /simon/. /simon/test/.. #这两个互为硬链接 ..表示上一级目录 6、默认情况下eth0网卡配置文件的路径以及客户端DNS的路径 cat /etc/sysconfig/network-scripts/ifcfg-eth0 DSN的配置 1.cat /etc/resolv.conf 2.网卡配置文件 3.网卡配置文件里面的DNS优先 7、找当前目录下的所有文件,并把文件中的www.etiantian.org字符串替换成www.baidu.com 假设当前目录是在 /simon find /simon -type f -name "*.txt" 1.find /simon -type f -name "*.txt" |xargs sed 's#wwww.etiantian.org#www.baidu.com#g' 2.预备知识 which mkdir # 查看命令所在的目录 ls -l `which mkdir` #对 which mkdir 的运行的结果进行后续操作 sed 's#www.etiantian.org#www.baidu.com#g' $(find /simon -type f -name "*.txt") # $() 把运行的结果留下来 显示的结果留下来 === `` sed 's#www.etiantian.org#www.baidu.com#g' `find /simon -type f -name "*.txt"` # $() 把运行的结果留下来 显示的结果留下来 === `` 3.find /simon -type f -name ''*.txt -exec ls -l {} \; ???? # 找到的所有结果都会放到{}中 8、echo 'simon';echo 'simon2' 的结果在同一行输出 linux中用;分割多个命令 echo -n 'simon';echo 'simon2' # 表示取消输出每一行结尾的换行符号 echo -e "a\nb" # -e 支持转义字符 echo -e "a\nb\n\tc" # \t 一个tab键 echo -e "a\nb\n\tc" > echo.txt # 写入文件 cat echo.txt -A # 把文件中的特殊字符显示出来 比如$表示结尾 ^I表示tab 补充date相关 /usr/sbin/ntpdate time.windows.com # 同步一下时间 date + 格式 date +%F === date +%Y-%m-%d date +%T === date +%H:%M:%S date +%w @周几 date +%F\ %T #年月日时分秒 date -d '-1day' +%F # 1天前 date -d '-7day' +%F_%w #7天前,年月日_周几 date -s '20170101' # 修改时间 /usr/sbin/ntpdate time.windows.com # 同步一下时间 主要是ntpdate这个命令 # 找命令的路径 find / -type f -name 'sed' which sed # 显示命令的绝对路径 whereis sed # 找出命令相关的 (帮助 man) locate # 基本不用 根据一个列表(数据库)查询系统中的文件 cat /var/log/messages # 系统默认的日志 cat /var/log/secure # 用户的登录信息 cat /etc/fstab # 开机的时候自动挂载的列表,开机的时候每个磁盘分区对应着什么入口的列表 cat /etc/profile # 配置环境变量,别名 cd /var/spool/cron/ # 定时任务的配置文件(存疑) cat /etc/hosts # 解析主机名 作用:主机名转到ip地址 DNS解析:域名转到对应的ip地址 # 查看现在linux连接数 w last # 谁在什么时间登录了系统,多久 lastlog #所有用户最近一次的登录信息 # 总核数 = 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数 cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l # 查看物理CPU个数 cat /proc/cpuinfo| grep "cpu cores"| uniq # 查看每个物理CPU中core的个数(即核数) cat /proc/cpuinfo| grep "processor"| wc -l # 查看逻辑CPU的个数 cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c # 查看CPU信息(型号) cat /proc/meminfo # 查看内 存信息 系统的负载--系统繁忙程度 越接近cpu的核心总数表示越繁忙 #关机和重启的命令 重启 init 6 reboot shutdown -r 1 # 一分钟后重启 ctrl+c 取消 shutdown -r now ====== reboot 关机 init 0 halt # 如果是物理机的话,需要手动关闭电源 poweroff # 物理机的话,电源都会关闭 # 以上三个,执行了就没办法取消 shutdown -h 1 shutdown -h now #快捷键功能 ctrl + a 把光标移动到行首 ctrl + e 把光标移动到行尾 ctrl + c 取消当前的操作 ctrl + d logout命令 退出当前用户 文本中使用的时候:删除光标的后一个字符(作用等于键盘上的delete键) ctrl + l 清屏(clear) ctrl + u 剪切光标所在位置到行首的内容 ctrl + k 剪切光标所在位置到行尾的内容 ctrl + y 粘贴(配合上面两个的剪切使用,linux系统级别的命令) ctrl + → 向右移动一个单词 ctrl + ← 向左移动一个单词 ctrl + r # search 搜索历史命令,上下箭头换着找 history | grep 'sed' vi/vim 初级快捷键 移动光标: 移动到文件的第一行 gg :1 1G 移动到文件的最后一行 G :$ 快读到达文件的第100行 100gg 100G :100 移动光标到行首 0 ^ 移动光标到行尾 $ 光标: ↑k ←h →l ↓j 编辑: 在当前和下一行插入一个空行并进入编辑模式 o(小写字母o) 剪切光标所在位置到行尾的内容,然后进入编辑模式 C(大写字母C) 删除当前行的内容到结尾 dG 撤销上一次的操作 u(小写字母) 恢复上一次的操作(存疑) ctrl + r 复制粘贴剪切: 删除光标所在位置的内容到行尾 D 复制当前行 yy 剪切(剪切完不粘贴就是删除了呗)当前行 dd 粘贴 p 搜索: /要找的内容那个 继续向下搜索n 继续向上搜索N