标准输出
重定向符号
#> 1> 标准输出重定向 先把文件的内容清空 把内容放在文件的最后一行
#>> 1>> 追加重定向 把内容放在文件的最后一行
1 标准输出 执行正确的内容才会通过漏斗
2> 标准错误重定向
2>> 错误追加重定向
[root@lewen ~]# eho hello 2>>/data/lewen.txt [root@lewen ~]# cat /data/lewen.txt hello lewen 错误 -bash: eho: command not found [root@lewen ~]# eho hello 2>>/data/lewen.txt [root@lewen ~]# cat /data/lewen.txt hello lewen 错误 -bash: eho: command not found -bash: eho: command not found eho hello >>/data/lewen.txt 2>>/data/lewen.txt eho hello >>/data/lewen.txt 2>&1 把错误的信息放入到对的信息中 对的错误在一起 < 输入重定向 echo 1 2 3 4 5 >/data/num.txt [root@lewen ~]# cat /data/num.txt 1 2 3 4 5 [root@lewen ~]# xargs -n2 </data/num.txt 1 2 3 4 5 << 追加输入重定向 cat >>/data/lewen.txt<<EOF I am studying linux EOF
find命令
[root@lewen tmp]# find /root/ -type f -name "lewen.txt" /root/data/lewen.txt [root@lewen tmp]# #find /root/ -type f -name "lewen.txt" [root@lewen tmp]# #find 在哪里找 找什么类型的 找什么名字 -type 找什么类型的 f file 文件 d directory 目录
管道 |
[root@lewen tmp]# find /root/ -type f -name "lewen.txt" /root/data/lewen.txt [root@lewen tmp]# [root@lewen tmp]# [root@lewen tmp]# find /root/ -type f -name "lewen.txt"|xargs ls -l -rw-r--r--. 1 root root 0 Sep 20 02:27 /root/data/lewen.txt 找出以.txt结尾的文件 [root@lewen tmp]# find /root/ -type f -name "*.txt" /root/data/lewen.txt /root/data/num.txt
-
已知文件test.txt内容
lewen
test
lidao
请给出输出test.txt文件内容时,不包含lewen字符串的命令。
创建测试文件: mkdir /data cat >/data/test.txt<<EOF test liyao lewen EOF #方法1-grep [root@lewen ~]# cd /data/ [root@lewen data]# cat test.txt test liyao lewen [root@lewen data]# grep -v "lewen" test.txt test liyao #方法2-head [root@lewen data]# head test.txt test liyao lewen [root@lewen data]# head -n2 test.txt test liyao [root@lewen data]# head -2 test.txt test liyao [root@lewen data]# tail test.txt test liyao lewen [root@lewen data]# tail -2 test.txt liyao lewen [root@lewen data]# tail -1 test.txt lewen #方法3-awk [root@lewen data]# awk '/lewen/' test.txt lewen [root@lewen data]# grep "lewen" test.txt lewen [root@lewen data]# grep -v "lewen" test.txt test liyao [root@lewen data]# awk '!/lewen/' test.txt test liyao [root@lewen data]# #awk中 !表示取反 非 #方法4-sed [root@lewen data]# sed '/lewen/d' test.txt test liyao 小结: 1.grep 过滤 ****** 2.head tail ****** 3.sed awk 了解
- 已知/tmp下已经存在test.txt文件,如何执行命令才能把/mnt/test.txt拷贝到/tmp下覆盖掉/tmp/test.txt,而让系统不提示是否覆盖(root权限下)。
[root@lewen data]# cp /mnt/test.txt /tmp/ cp: overwrite `/tmp/test.txt'? ^C #方法1 撬棍 [root@lewen data]# \cp /mnt/test.txt /tmp/ #方法2 使用命令的绝对路径 全路径 [root@lewen data]# which cp alias cp='cp -i' /bin/cp [root@lewen data]# which mkdir /bin/mkdir [root@lewen data]# ls -l /bin/cp -rwxr-xr-x. 1 root root 122896 Mar 23 2017 /bin/cp [root@lewen data]# /bin/cp /mnt/test.txt /tmp/ #提示你是否覆盖? 是否删除? #为何我们执行cp的时候就相当于cp -i #为何我们执行rm的时候就相当于rm -i ###linux别名 ##小名 昵称 爱称 外号 ##目标 ###1.防止运行危险命令****** ###2.省事 简化命令 ##如何设置一个别名 ###第一个里程碑-查看系统中的别名 [root@lewen data]# alias rm cp mv alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' ###第二个里程碑-模仿 #执行rm命令的时候提示 do not use rm root@lewen data]# echo do not use rm do not use rm [root@lewen data]# alias rm='echo do not use rm' [root@lewen data]# alias rm alias rm='echo do not use rm' [root@lewen data]# rm /tmp/test.txt do not use rm /tmp/test.txt [root@lewen data]# rm -f /tmp/test.txt do not use rm -f /tmp/test.txt [root@lewen data]# rm -fr /tmp/test.txt do not use rm -fr /tmp/test.txt ###第三个里程碑-永久生效 #/etc/profile #vim 快捷键 ##移动光标到文件的最后一行 G ##移动光标到文件的 第一行 gg ##在光标所在位置的下一行插入一个空行 并进入编辑模式 o(小写字母) [root@lewen ~]# tail -1 /etc/profile alias rm='echo do not use rm' [root@lewen ~]# source /etc/profile [root@lewen ~]# alias rm alias rm='echo do not use rm' #第四个里程碑-填坑 编辑 /root/.bashrc 把 alias rm='rm -i'这一行前面加上一个注释# 小结: 1.配置别名 2.临时取消别名 cp rm
- 只查看ett.txt文件(共100行)内第20到第30行的内容
seq 100 >/lewen/ett.txt
[root@lewen ~]# #sed 默认输出 sed命令会把文件的内容 默认都显示出来 [root@lewen ~]# sed -n '20p' /lewen/ett.txt 20 [root@lewen ~]# sed -n '20,30p' /lewen/ett.txt 20 21 22 23 24 25 26 27 28 29 30
[root@lewen ~]# head -30 /lewen/ett.txt |tail -11 20 21 22 23 24 25 26 27 28 29 30
#方法3-awk [root@lewen ~]# awk 'NR==20' /lewen/ett.txt 20 #NR表示行号 #== 表示等于 [root@lewen ~]# awk 'NR==20,NR==30' /lewen/ett.txt [root@lewen ~]# sed -n '20,30p' /lewen/ett.txt #方法4-grep [root@lewen ~]# grep "20" /lewen/ett.txt 20 [root@lewen ~]# #文件的内容 ====等于这一行的行号 [root@lewen ~]# grep -A10 "20" /lewen/ett.txt 20 21 22 23 24 25 26 27 28 29 30 小结: 1.取出文件中的某一行,或者连续的几行 2.sed,head+tail 3.awk-了解
- 把/lewen目录及其子目录下所有以扩展名 .sh结尾的文件中,文件包含lewen的字符串全部替换为oldgirl
创建测试环境: mkdir -p /lewen/test cd /lewen echo "lewen">test/del.sh echo "lewen">test.sh echo "lewen">t.sh touch lewen.txt touch alex.txt #第一个里程碑-找出你要的文件 [root@lewen lewen]# find /lewen/ -type f /lewen/t.sh /lewen/lewen.txt /lewen/test.sh /lewen/test/del.sh /lewen/ett.txt /lewen/alex.txt [root@lewen lewen]# find /lewen/ -type f -name "*.sh" /lewen/t.sh /lewen/test.sh /lewen/test/del.sh #第二个里程碑-lewen替换为oldgirl 处理一个文件 [root@lewen lewen]# cat /lewen/t.sh lewen [root@lewen lewen]# #sed 's#找谁#替换为什么#g' /lewen/t.sh [root@lewen lewen]# #替换 [root@lewen lewen]# sed 's#lewen#oldgirl#g' /lewen/t.sh oldgirl [root@lewen lewen]# cat /lewen/t.sh lewen [root@lewen lewen]# #sed修改文件的内容 [root@lewen lewen]# sed -i 's#lewen#oldgirl#g' /lewen/t.sh [root@lewen lewen]# cat /lewen/t.sh oldgirl #第三个里程碑-把find命令找到的文件交给sed命令处理 [root@lewen lewen]# find /lewen/ -type f -name "*.sh" /lewen/t.sh /lewen/test.sh /lewen/test/del.sh [root@lewen lewen]# find /lewen/ -type f -name "*.sh"|xargs ls -l -rw-r--r--. 1 root root 7 Sep 25 11:59 /lewen/test/del.sh -rw-r--r--. 1 root root 7 Sep 25 11:59 /lewen/test.sh -rw-r--r--. 1 root root 8 Sep 25 12:08 /lewen/t.sh [root@lewen lewen]# find /lewen/ -type f -name "*.sh"|xargs sed 's#lewen#oldgirl#g' oldgirl oldgirl oldgirl [root@lewen lewen]# find /lewen/ -type f -name "*.sh"|xargs sed 's#lewen#oldgirl#g' -i [root@lewen lewen]# find /lewen/ -type f -name "*.sh"|xargs cat oldgirl oldgirl oldgirl 小结: 1.find 与|xargs 2.ls -l rm sed 3.sed名进行替换 修改文件内容
1.find 与|xargs
2.ls -l rm sed
3.sed名进⾏替换 修改⽂件内容
s5-Linux系统优化
#添加用户
linux用户分类
1.root 用户 linux皇帝
2.普通用户 贫民百姓
[root@lewen lewen]# useradd lewen [root@lewen lewen]# id lewen uid=500(lewen) gid=500(lewen) groups=500(lewen) [root@lewen lewen]# id lilaoshi id: lilaoshi: No such user [root@lewen lewen]# passwd lewen Changing password for user lewen. New password: BAD PASSWORD: it is too simplistic/systematic BAD PASSWORD: is too simple Retype new password: passwd: all authentication tokens updated successfully. #切换用户 [root@lewen lewen]# whoami root [root@lewen lewen]# su - lewen [lewen@lewen ~]$ whoami lewen #切换回root [lewen@lewen ~]$ su - root Password: #退出当前用户 注销 [lewen@lewen ~]$ #ctrl + d [lewen@lewen ~]$ logout 课后题目: #su 与su -区别
查看系统什么版本的?
[root@lewen ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [root@lewen ~]# uname -r 2.6.32-696.el6.x86_64 [root@lewen ~]# uname -m x86_64
#PS1 系统环境变量
##一般都是大写的,在系统中任何的地方都可以使用。
[root@lewen ~]# echo $PS1 [\u@\h \W]\$ [root@lewen ~]# #\u=====当前用户名 whoami [root@lewen ~]# #\h 当前主机名 hostname [root@lewen ~]# #\W 当前的位置 pwd [root@lewen ~]# PS1='[\u@\h \W \t]\$'
SElinux关闭
#临时关闭-重启服务器失效 [root@lewen ~]# #查询selinux状态 [root@lewen ~]# getenforce Enforcing [root@lewen ~]# #enforcing selinux正在运行 [root@lewen ~]# #permissive selinux临时关闭 还是提示警告 [root@lewen ~]# #disabled selinux彻底关闭 [root@lewen ~]# setenforce usage: setenforce [ Enforcing | Permissive | 1 | 0 ] [root@lewen ~]# setenforce 0 [root@lewen ~]# getenforce Permissive #永久关闭-重启服务器生效 vim /etc/selinux/config [root@lewen ~]# grep "=disabled" /etc/selinux/config SELINUX=disabled [root@lewen ~]# grep "disabled" /etc/selinux/config # disabled - No SELinux policy is loaded. SELINUX=disabled 小结: 1.临时关闭-setenforce 2.永久关闭-修改配置文件
关闭Iptables
#服务器对外使用,有外网,开启防火墙 #服务器内网, 关闭 #关闭防火墙 #临时关闭 #查询防火墙是否在运行 /etc/init.d/iptables status [root@lewen ~]# /etc/init.d/iptables stop iptables: Setting chains to policy ACCEPT: filter [ OK ] iptables: Flushing firewall rules: [ OK ] iptables: Unloading modules: [ OK ] [root@lewen ~]# /etc/init.d/iptables stop [root@lewen ~]# /etc/init.d/iptables status iptables: Firewall is not running. #永久关闭 开机自动启动 #让iptables在开机的时候 不自动启动 chkconfig [root@lewen ~]# chkconfig |grep ipt iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off [root@lewen ~]# chkconfig iptables off [root@lewen ~]# chkconfig |grep ipt iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off 小结: 1.临时关闭 xxxx stop 2.永久 chkconfig xx off
#显示中文乱码
1.什么是字符集? ##表示字符 文字的方法 UTF-8 万国码 系统默认的字符集 GBK GB2312 2.如何查看系统的字符集 [root@lewen ~]# echo $LANG en_US.UTF-8 [root@lewen ~]# #语言.字符集 3.如何修改字符集-临时 [root@lewen ~]# export LANG=zh_CN.UTF-8 [root@lewen ~]# echo $LANG zh_CN.UTF-8 4.如何修改字符集-永久 [root@lewen ~]# cat /etc/sysconfig/i18n LANG="en_US.UTF-8" SYSFONT="latarcyrheb-sun16" 5.生效 [root@lewen ~]# source /etc/sysconfig/i18n [root@lewen ~]# echo $LANG en_US.UTF-8 #1.查看中文乱码的原因****** 1)linux使用的字符集 2)远程连接工具使用的字符集 1) 与 2) 不同 就会导致乱码 #2.排查 1)linux使用的字符集 2)远程连接工具使用的字符集 #3.解决 方法1 修改远程连接工具字符集 方法2 修改linux系统的字符集 1.如何修改字符集-临时 2.如何修改字符集-永久 3.生效
s6-Linux目录结构特点
一切从根开始
磁盘/设备/分区没有挂载 无法使用
举例-linux下面使用光盘
#1.把光盘放入到光驱中 #2.linux中使用光盘 /dev/cdrom [root@lewen ~]# ll /dev/cdrom lrwxrwxrwx. 1 root root 3 Sep 25 10:01 /dev/cdrom -> sr0 [root@lewen ~]# cd /dev/cdrom -bash: cd: /dev/cdrom: Not a directory [root@lewen ~]# cat /dev/cdrom ###3.把光盘挂载到系统里面 [root@lewen ~]# mount /dev/cdrom /mnt/ mount: block device /dev/sr0 is write-protected, mounting read-only [root@lewen ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 8.8G 1.4G 7.0G 17% / tmpfs 1.9G 0 1.9G 0% /dev/shm /dev/sda1 190M 40M 141M 22% /boot /dev/sr0 3.7G 3.7G 0 100% /mnt 小结: 1.一切从根开始,一切皆文件 2.linux设备(光盘/磁盘分区)不挂载无法使用 3.挂载相当于给磁盘分区/设备 开了一个入口 通过入口进入到光盘/磁盘分区中 4.入口-挂载点-目录
/etc/sysconfig/network-scripts/ifcfg-eth0
#网卡的配置文件 DEVICE=eth0 ###网卡的名字 HWADDR=00:0c:29:1e:67:61 #@@hardware address硬件地址 MAC地址 TYPE=Ethernet ###互联网 UUID=3405d22b-1aab-45a5-b57f-c0d005e4f269 ###UUID 系统中唯一的标识 ONBOOT=yes #@@booton 在重启的时候是否开启网卡(自动运行) NM_CONTROLLED=yes ###是否能被network软件进行管理 BOOTPROTO=none #@@网卡获取ip地址的方式 #none/static ip地址是固定的 #dhcp 自动获取ip地址 IPADDR=10.0.0.200 #@@ ip address ip地址 NETMASK=255.255.255.0 ### 子网掩码 GATEWAY=10.0.0.2 #@@ 网关 默认的出口 USERCTL=no ###是否准许普通用户管理网卡 开 关 重启 PEERDNS=yes ### DNS1=223.5.5.5 #@@ DNS2=223.6.6.6 #@@ #上网使用 www.baidu.com jd.com taobao.com 域名 ##把使用的域名转换为ip地址 ----DNS做 域名解析服务/系统 ###阿里云的DNS #223.5.5.5 #223.6.6.6 #114 #114.114.114.114 #114.114.115.115 #谷歌 #8.8.8.8
#如何修改DNS
#1.在网卡配置文件中添加上 DNS1=223.5.5.5 DNS2=223.6.6.6 [root@lewen ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 HWADDR=00:0c:29:1e:67:61 TYPE=Ethernet UUID=3405d22b-1aab-45a5-b57f-c0d005e4f269 ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=none IPADDR=10.0.0.200 NETMASK=255.255.255.0 GATEWAY=10.0.0.2 USERCTL=no PEERDNS=yes IPV6INIT=no DNS1=223.5.5.5 DNS2=223.6.6.6
#网卡的配置生效-重启网卡
重启某一个网卡
ifdown eth0 && ifup eth0
重启所有网卡
/etc/init.d/network restart
/etc/resolv.conf
配置DNS。
网卡配置文件里面的DNS优先于 /etc/resolv.conf
配置DNS都在网卡里面配置
/etc/hosts ip地址与域名解析关系 对主机名进行解析
#www.baidu.com ---->119.75.216.20 10.0.0.200 www.baidu.com www.jd.com ##进行测试 /etc/hosts C:\Windows\System32\drivers\etc\hosts
/etc/sysconfig/network 修改主机名的文件
查看当前的主机名 [root@lewen ~]# hostname lewen 临时修改主机名-重启服务器之后失效 [root@lewen ~]# hostname lewenedu01-nb [root@lewen ~]# hostname lewenedu01-nb 永久修改主机名-重启服务器之后生效 [root@lewenedu01-nb ~]# cat /etc/sysconfig/network NETWORKING=yes HOSTNAME=lewenedu01-nb
/etc/fstab 开机的时候自动挂载的文件 开机的时候给每个磁盘分区开一个入口
#第一列 --表示设备/分区
#第二列 --表示入口/目录/挂载点
/etc/rc.local 开机的时候自动运行的文件 需要开机自启动的软件/命令/服务放在这个文件中
Startup
如何让一个软件/脚本/服务开机自动运行?
1./etc/rc.local #服务器运行软件的清单
2.通过chkconfig管理 开机自启动
/etc/inittab 开机的时候运行级别的配置文件
init tab(table) 1.linux运行级别讲解 0 关机状态,不要把运行级别设置为0 1 单用户模式 root用户密码忘记了 2 多用户模式,但是没有NFS 3 完全的多用户模式,命令模式,文本模式 4 未使用 5 X11,桌面模式,图形化界面模式 6 重启状态,不要把运行级别设置为6 2.如何查看当前运行级别 [root@lewenedu01-nb ~]# runlevel N 3 [root@lewenedu01-nb ~]# #N 3 [root@lewenedu01-nb ~]# #上一次使用的运行级别 当前系统的运行级别 3.如何切换运行级别-临时 [root@lewenedu01-nb ~]# #上一次使用的运行级别 当前系统的运行级别 [root@lewenedu01-nb ~]# init 5 [root@lewenedu01-nb ~]# runlevel 3 5 4.如何永久修改运行级别-重启生效 [root@lewenedu01-nb ~]# tail -1 /etc/inittab id:3:initdefault: 小结: 1.0-6含义 2.如何查看 3.如何修改 临时 永久
目录详解--/etc/init.d 服务管理的命令
/etc/profile 系统环境变量 别名
PS1 PATH
LANG==>/etc/sysconfig/i18n
/etc/bashrc 别名
#国法(全国各地生效)
/etc/profile 系统环境变量 别名 √√√√√
/etc/bashrc 别名
##家规(地*策 当前用户生效)
~/.bashrc
~/.bash_profile
~表示当前用户的家目录
root ~ ===== /root
lewen ~ ===== /home/lewen
/usr/local 编译安装的软件默认的位置
C:\Program Files windows安装软件默认的位置
Linux下面安全软件的方法
1.yum (自动解决安装依赖的软件) 点外卖-你缺少什么外面给你解决 yum install tree 2.rpm (缺啥少啥自己解决) 速冻水饺-半成品-缺少的东西自己解决 3.编译 自己做饭 买菜切菜---------炒菜----上菜 ./configure------make----make install [root@lewenedu01-nb ~]# ##查看软件是否安装成功 [root@lewenedu01-nb ~]# rpm -qa |grep tree tree-1.5.3-3.el6.x86_64
/usr/share
/var/log/messages 系统默认日志信息
/var/log/secure 系统用户的登录信息(谁 什么时候 从哪里登录的 是否成功)
/proc/meminfo 内存信息
[root@lewenedu01-nb ~]# free total used free shared buffers cached Mem: 3908500 386300 3522200 236 39192 165944 -/+ buffers/cache: 181164 3727336 Swap: 786428 0 786428 [root@lewenedu01-nb ~]# free -h total used free shared buffers cached Mem: 3.7G 377M 3.4G 236K 38M 162M -/+ buffers/cache: 176M 3.6G Swap: 767M 0B 767M
/proc/cpuinfo 查看cpu信息lscpu
/proc/loadavg 系统的负载
负载:系统的繁忙程度 最近1分钟 最近5分钟 最近15分钟 平均负载 [root@lewenedu01-nb ~]# w 22:20:05 up 12:18, 4 users, load average: 0.00, 0.00, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 10.0.0.1 19:16 2:08m 0.18s 0.18s -bash root pts/1 10.0.0.1 11:03 3:02m 0.06s 0.06s -bash root pts/2 10.0.0.1 20:32 1.00s 0.18s 0.07s w root pts/4 10.0.0.1 20:18 2:01m 0.03s 0.03s -bash
#系统的负载接近系统cpu的核心数量
/proc/mounts 显示系统挂载信息
df -h
findmnt == cat /proc/mounts