linux命令
-
IDE 接口
/dev/hd*
- hda第一块盘
- hda1, hda2 分区
- hab第二块盘
- hda第一块盘
-
SCSI: SAS/SATA/SSD
-
/dev/sd*
-
/dev/sda
第一块盘sda1,sda2
-
/dev/sdab
第二块盘
-
-
分区的编号1-4,只能给P+E
L分区(逻辑分区)编号只能从5开始。
5个分区
1p+1e(4个L) : p1 L5 L6 L7 L8
2p+1e(3L) : p1 p2 L5 L6 L7
3p+1e(2L): p1 p2 p3 L5 L6
P+E的数量<=4
E最多一个,可以没有
Linux分区的要求:
/
: 根分区 用来存放系统文件以及程序。
swap
:交换分区,不是必须有的,相当于虚拟内存。
/boot
:引导分区
基础命令之cat vi vim touch echo
Linux命令 150个 常用的也就是80个
#1.创建一个目录/data
mkdir /data # make directorys 的缩写
mkdir
-m :指定要创建目录的权限,不常用,会用 chmod处理
#mkdir -m 777 /tmp/test
-p :这个参数用来递归创建目录
#2.在/data下面建立一个文件 oldboy.txt
touch /data/oldboy.txt
#3.为oldboy.txt增加内容为"I am studying Linux."
vi oldboy.txt 然后a或者i进入编辑模式,然后敲入内容I am studying Linux.
#法1:
#vi 编辑器,相当于记事本
#vim 复杂编辑器
#法2:
echo "I am studying Linux." > oldboy.txt # > 是覆盖输入重定向 >>追加重定向
#法3:
cat >>/data/oldboy.txt<<EOF
I am studying Linux.
EOF
#EOF成对出现,箭头的方向就是数据的流向
cat -n /etc/passwd #显示行号
标准输入与输出
-
标准输入(stdin): 代码为0,使用<或<<数据流向从右向左
-
标准正常输出(stdout):代码为1,使用>或>>。数据流向从左向右。
-
标准错误输出(stderr):代码为2,使用2>或2>>。
- 命令执行错了,才会输出。
#执行正确输入的oldboy.txt 错误输入到oldgirl.txt 此例输入到oldgirl.txt ech 111 1>oldboy.txt 2>oldgirl.txt
箭头的指向就是数据的流向。
基础命令之cp、mv、ls、man、help、rm
#4.把oldboy.txt文件拷贝到/tmp下
cp oldboy.txt /tmp
#cp
-a:相当于-pdr
-d: 若源文件为链接文件(link file),则复制链接文件属性而非档案本身
-f: 强制,若目标档案已经存在且无法开启,则移除后再尝试;
-i: 若目标文件已经存在时,在覆盖时先询问;
-p: 连同档案的属性一起复制过去,而非使用默认属性;
-r: 递归,用于复制目录
-u: 若目标文件存在,则目标文件比源文件旧时才复制;
#5.把/data目录移动到/root下
mv /data/ /root/
#内置命令
echo eval exec export read shift exit time expr
#6、进入root目录下的data目录,删除oldboy.txt
cd /root/data/
rm oldboy.txt
基础命令之find
find
find /root/data/ -type f #查找是文件类型的文件
find /root/data/ -type f -exec rm -f {} \; #-exec 执行删除命令
find /root/data/ -type f|xargs rm -f #管道删除
find /root/data/ -name "oldgirl.txt" #按照名字查找
find /root/data/ ! -name "oldgirl.txt"|xargs rm -f #除oldgirl.txt之外的文件都删除
# !是取反
基础命令之rm
rm
-i:询问用户是否确认删除,用y或n来回答
-r: recursive,递归删除
-f: force 强制删除
#删除空目录
rmdir /root/data
基础命令之cat、grep、sed
#8.已知文件test.txt内容为:
test
liyao
oldboy
请给出打印test.txt内容时,不包含oldboy字符串的命令
#生成数据
cat >>test.txt<<EOF
test
liyao
oldboy
EOF
#法1
head -2 test.txt
#head 取文件的前n行,默认是前10行,指定取多少行 -n 3 即取前3行,简写-3
#法2
grep 命令 ==过滤器,把想要的或者不想要的分离开,Linux三剑客之一
grep "oldboy" test.txt #出现 oldboy
grep -v "oldboy" test.txt #不会出现 oldboy, 即-v是排除
#grep
-B 除了显示匹配的一行之外,并显示该行之前num行
grep 30 -B 10 test.txt
-A 除了显示匹配的一行之外,并显示该行之后num行
grep 30 -A 10 test.txt
-C 除了显示匹配的一行之外,并显示该行之前后各num行
grep 30 -C 10 test.txt
-i 不区分大小写
-o 只打印包含的内容
-v 反向匹配
-E --extended-regexp #多组过滤,过滤多个字符串
grep -E "3306|1521" /etc/services #grep -E = egrep
#法3
sed -e '/^oldboy/d' test.txt #d 删掉
# sed
-n 取消默认输出
过滤 sed '/过滤的内容/处理的命令' 文件
处理的命令 p:print d:delete
sed -n "2p" oldboy.txt #打印第二行
sed -n "1,2p" oldboy.txt #打印第一、二行
sed 's#ddd#oldboy#g' oldboy.txt #此时替换没有修改文件的内容
sed -i 's#ddd#oldboy#g' oldboy.txt #此时替换修改了文件的内容
基础命令之mkdir、yum、rpm、tree
#9.请用一条命令完成创建目录/oldboy/test,即创建/oldboy目录及/oldboy/test目录
mkdir -p /oldboy/test
基础命令之yum、rpm
生产环境最好不要用yum update
rpm -ivh #i ==install v=verbose h==human
#rpm -ivh 包名.rpm
#最大问题,依赖问题不好解决
-q: query
-a: all
LANG=en
#10.已知/tmp目录下已经存在了test.txt文件,如何执行命令才把/mnt/test.txt拷贝到/tmp下覆盖掉/tmp/test.txt,而让Linux系统不提示是否覆盖(root权限下)
#法1:使用全路径
/bin/cp /mnt/test.txt /tmp/test.txt
#法2:使用\
\cp /mnt/test.txt /tmp/test.txt
#注: cp 是 cp -i的别名,会提示覆盖,所以要以cp原始命令运行
"\":运行原始命令
查看当前别名
alias
取消别名
unalias
~
:用户的家目录
#11.只查看ett.txt文件(100行)内第20到第30行的内容
#sed == stream editor
#法1
head -30 ett.txt|tail -11
tail -81 ett.txt|head -11
#法2
sed -n '20,30p' ett.txt #-n 默认不输出
sed -n 20,30p ett.txt
#法3
awk '{if(NR<31 && NR>19) printf $1 "\n"}' test01.txt#NR是行号
#法4
grep 20 -A 10 test.txt #有待考虑
基础命令之seq
seq
seq [OPTION]... LAST
seq [OPTION]... FIRST LAST
seq [OPTION]... FIRST INCREMENT LAST
-s:指定分隔符
基础命令之tail
tail -n
-f:跟踪变化
#tail -3 test.txt
#查看尾部变化的试验
for n in `seq 201 300`; do echo $n>>test.txt; sleep 1 ;done
基础命令之awk
# awk 列操作文件
#操作案例
awk '{print $1}' awk.txt
awk -F ':' '{print $1}' /etc/passwd
awk -F ':' '{print $1 $2 $3}' /etc/passwd # -F 指定分隔符
awk '{print $1 $2}' oldboy.txt #打印第1列和第2列 $NF 最后一行
awk '{if(NR>20&&NR<26) print $0"\n"}' /etc/passwd #$0是整行
#13.把/oldboy目录及其子目录下所有以扩展名.sh结尾的文件中包含./hostlists.txt的字符串全部替换为../idctest_iplist
find ./ -name "*.sh" -type f -exec sed -i 's#./hostlists.txt#../idctest_iplist#g' {} \;
#sed
-i : 改变文件内容
# 1.创建目录
mkdir a b c d
# 2.
echo oldboy > a/test.txt
echo oldboy > c/test.txt
mkdir -p a/ddd/fff
echo oldboy >a/ddd/fff/test.txt
#法1
find ./ -type f -name "test.txt" -exec sed -i 's#oldboy#oldgirl#g' {} \;
#法2
find ./ -type f -name "test.txt" | xargs sed -i 's#oldboy#oldgirl#g'
#法3
sed -i 's#oldboy#oldgirl#g' `find ./ -type f -name "test.txt"`
cd -
: 上一次的目录‘
快捷键
三次以上的tab键
ctrl + a :光标移至行首
ctrl + e :光标移至行尾
ctrl + u :删除(剪切)光标以前
ctrl + k :删除(剪切)光标以后
ctrl + c :终止
ctrl + shift + c :复制
ctrl + shift + v :粘贴
ctrl + l :清屏
ssh远程连接
rpm -qa openssh openssl
ps -ef |grep ssh #查看服务进程
ss -lntup | grep ssh #查看端口
netstat -lntup | grep ssh#查看端口
ip add #查看IP
ifconfig #查看IP
openssh : 提供远程连接
openssl : 加密
- 连接过程:ssh协议版本 服务器的IP地址 指定端口 合理的用户名和密码
ssh 端口默认为22�
IPv4 32位
IPv6 128位
检查ssh连接
- 物理链路
ping
- 服务是否正常
telnet
telnet IP port
- 排查服务器防火墙
- 关闭防火墙
/etc/init.d/iptables stop
相当于service iptables stop
- 关闭防火墙
- 服务是否开启
- 检查物理线路
- 排查服务器防火墙
ssh 客户端与Linux共享软件
yum install lrzsz -y
- 上传
rz
- 下载
sz -y 文件路径
-y
是覆盖选项
基础命令之uname、hostname
#公司用什么系统? 答:内核为2.6.32的64位Centos6.9 Linux系统
hostname #查看主机名
uname #打印系统信息
-r #内核版本
-m #内核是32位还是64位
-n #查看主机名
-a #查看所有
Linux多任务、多进程、多CPU、多用户的操作系统
平时管理电脑只用普通用户,禁止用root管理员
50%事故来自内部。
思想:做有价值的运维。
我去贵公司工作,是带着团队来的。
遇到重大问题,先汇报(通知上级),再处理;处理完之后,写好详细文档,发给技术团队。
述职报告:用数据说话,为公司省钱,提高了效率;而不是说苦劳,加班多久。
把自己当做公司股东来做事。
基础命令之useradd、passwd、su
useradd onefiter #添加onefiter用户
passwd onefiter #给用户onefiter设置密码
whoami #当前用户的名称
su : switch user
su - :当前的环境变量切换过去
SELinux详解以及运行级别
配置文件:/etc/selinux/config
或 cat /etc/sysconfig/selinux
(软连接)
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
- enforcing:开启装填
- permissive:警告不启用
- disabled:禁止状态
更改为disabledsed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
getenforce
:查看SELinux生效的状态
setenforce
:设置SELinux状态 setenforce 0
usage: setenforce [ Enforcing | Permissive | 1 | 0 ]
两个步骤:
-
永久生效 :改配置文件
-
临时生效:
setenforce 0
此时状态为 permissive -
都生效,操作以上两个步骤
运行级别 Run Level
开机加载的配置文件:cat /etc/inittab
# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# System initialization is started by /etc/init/rcS.conf
#
# Individual runlevels are started by /etc/init/rc.conf
#
# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
#
# Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
# with configuration in /etc/sysconfig/init.
#
# For information on how to write upstart event handlers, or how
# upstart works, see init(5), init(8), and initctl(8).
#
# 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)
#
七个运行级别
0 : 关机
1 : 单用户模式。找回密码
2 : 多用户模式,没有网络文件系统(NFS)
3 : 完整的多用户模式
4 : unused(预留模式)
5 : 桌面模式
6 : 重启
runlevel #查看运行级别
init #切换运行级别 init 6
精简开机启动
生产环境一般要开机启动的有5个
- sshd(远程连接服务)
- rsyslog(系统日志)
- network(网卡:激活/关闭各个网络接口)
- crond (定时任务)
- sysstat (监测系统性能)
处理方法
setup
setup-->System services # 取消* 即取消服务
chkconfig 设定开机自启动服务
chkconfig --help #查看帮助
chkconfig --list #查看运行状态
chkconfig --list|grep 3:on #查看运行级别3时为on
chkconfig --list atd #查看atd的运行级别
chkconfig atd off #关闭运行级别 默认是2 3 4 5 关闭
chkconfig --level 3 atd off #只关闭运行级别为3的atd服务
chkconfig --level 2345 atd off #处理2345的atd服务为off
#-------------------------------------------------------
# 利用awk实现
for name in `chkconfig --list |grep 3:on| awk '{print $1}' |grep -Ev "sshd|network|rssyslog|crond|sysstat"` ; do chkconfig $name off;done
# grep -Ev : -E 扩展正则表达式 -v:反向匹配
#-------------------------------------------------------------
#利用sed实现
chkconfig --list |grep 3:on| awk '{print $1}' |grep -Ev "sshd|network|rssyslog|crond|sysstat" |sed -r 's#(.*)#chkconfig \1 off#g'|bash
# () \1 后项引用
#sed -r #use extended regular expressions in the script.
#------------------------------------------------------------
chkconfig --list |grep 3:on| awk '{print $1}' |grep -Ev "sshd|network|rssyslog|crond|sysstat" |awk '{print "chkconfig" $1 "off"}' |bash
关闭防火墙
iptables
查看当前防火墙iptables -L -n
关闭防火墙:/etc/init.d/iptables stop
查看运行状态:/etc/init.d/iptables status
Linux优化之安全最小化5个思想
- 安装Linux系统最小化
- 开机自启服务最小化
- 操作命令最小化。例
rm -f test.txt
而不是rm -rf test.txt
- 登录Linux用户最小化。平时没有需求不用root登录
- 普通用户授权权限最小化
- Linux系统文件及目录的权限最小化,禁止随意创建、更改、删除文件
Linux系统从开机到登录之前的启动流程
- 1.开机BIOS自检
- 2.MBR引导
- 3.grub引导菜单
- 4.加载内核kernel
- 5.启动init进程
- 6.读取inittab文件,执行rc.sysinit,rc等脚本
- 7.启动mingetty,进入系统登陆界面
Linux优化:
- 1.建立普通账号,使用普通用户登录
- 2.处理SELinux
- 3.处理防火墙
- 4.精简开机自启动服务
- 5.Linux最小化安全理念
优化Linux远程ssh连接
Windows服务器的默认远程管理端口是3389,管理员用户是administrator,普通用书是guest
Linux 管理员root,普通用户是多个 端口是22
ssh的启动文件是/etc/init.d/sshd
ps -ef |grep sshd
:查看进程
ssh的配置文件 /etc/ssh/sshd_config
# $OpenBSD: sshd_config,v 1.80 2008/07/02 02:24:18 djm Exp $
# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.
# This sshd was compiled with PATH=/usr/local/bin:/bin:/usr/bin
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options change a
# default value.
#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
查看改变
diff
查看改变
vimdiff
高亮显示两个文件的区别
Windows下的比较工具 Beyond Compare
-
diff sshd_config.humor.20170412 sshd_config
-
vimdiff sshd_config.humor.20170412 sshd_config
-
命令替换
sed -ir '13 iPort 52113\nPermitRootLogin no\nPermitEmptyPasswords no\nUseDNS no\nGSSAPIAuthentication no' sshd_config #13 i 为从13行插入
查看sshd服务:
netstat -lntup|grep sshd
sudo命令
普通用户只能查看一些内容而不能修改,例cat /etc/hosts
通过 visudo
(等价于 vi /etc/sudoers
不完全等价)来管理
命令行模式下 yy+p 复制一行+粘贴
注:vi 行号+jj
跳转到指定行
root ALL=(ALL) ALL
humor ALL=(ALL) NOPASSWD: ALL #不提示密码
which useradd
命令的等价 find / -type f -name "useradd"
whereis -b useradd
locate useradd
which的原理
which 的查找是在全局环境PATH变量
echo $PATH #不同的路径以":"隔开
PATH的全局变量的配置是在 /etc/profile
PATH 系统变量,执行ls,cp等非内置命令时,系统会查找PATH里对应的路径是否有,如果没有就报告找不到该命令,有则执行
当执行which cp 来查看命令所在路径的时候,也是从PATH变量搜索
临时修改 export PATH="/tmp:$PATH"
永久生效 修改 /etc/profile下,使用 source /etc/profile 或 ./etc/profile 使其生效
字符集
字符集配置文件/etc/sysconfig/i18n
#查看当前字符集
cat /etc/sysconfig/i18n
#更改字符集
sed -i 's#LANG="en_US.UTF-8"#LANG="zh_CN.UTF-8#g' /etc/sysconfig/i18n
#使其生效,用source命令
source /etc/sysconfig/i18n
成功最有效的方法是向有经验的人学习
学好Linux运维 从鼓掌、点赞、鼓励评价别人开始
时间同步及配置
#date 命令
-s : set time described by STRING
#定时和互联网的时间校对
#找到一个时间服务器
/usr/sbin/ntpdate ntp.api.bz
ntpdate -u ntp.api.bz #NTP服务器(上海)
#hwclock : query and set the hardware clock (RTC)
#每五分钟同步一次时间
echo "*/5 * * * * /usr/sbin/ntpdate -u ntp.api.bz > /dev/null 2>&1" >> /var/spool/cron/root
#查看定时任务
crontab -l
# 以下1) 2) 3)都是等价的
1) 1>/dev/null 2>/dev/null
2) 1>/dev/null 2>&1(习惯选择这一种)
3) &>/dev/null
优化终端超时以及历史记录
export TMOUT=10
10秒不动会自动退出
永久生效
echo "export TMOUT=300" >> /etc/profile
`source /etc/profile `
历史记录
历史记录越少越安全
HISTSIZE=5 #历史条目数,临时生效
cat ~/.bash_history #历史记录文件
HISTFILESIZE=5 #历史文件大小
history -c #清空已有的历史记录
history -d 889 #删除指定数字标号
#全局生效
echo 'export TMOUT=300 >>/etc/profile' #超时时间登出
echo 'export HISTSIZE=5 >>/etc/profile' #历史记录的条目数
echo 'export HISTFILESIZE=5 >>/etc/profile' #历史文件大小
文件描述符
文件描述符是由无符号整数表示的句柄,进程使用它来标识打开的文件。
文件描述符的信息包括文件的打开模式、文件的位置类型、文件的初始类型等
文件描述符概念
1、表示形式为整数数字(一般为0~65535范围)
2、进程使用的时候会占用文件描述符
#查看默认文件描述符
ulimit -n
#调整文件描述符
#方法1
vim /etc/security/limits.conf
echo '* - nofile 65535 ' >> /etc/security/limits.conf
#方法2
ulimit -SHn 65535
#永久生效
/etc/rc.local #放到开机自启动
调整内核参数文件 /etc/sysctl.conf
shift+g 切换到文件末尾,o在下一行处于编辑模式
net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_tw_reuse = 1 # tw === TIME-WAIT
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.ip_local_port_range = 4000
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.core.somaxconn = 16384
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_max_orphans = 16384
# 以下参数是对 iptables 防火墙的优化,防火墙不开会提示,可以忽略不理
net.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_tcp_timeout_established = 180
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
以上是Web服务负载均衡器常规互联网的网站服务器的优化的基本思路
sysctl -p
让配置生效
- 查看网络状态
netstat -an
网络状态说明及优化命令和优化细节请看
http://yangrong.blog.51cto.com/6945369/1321594
http://oldboy.blog.51cto.com/2561410/1336488
netstat -an
:六列 man netstat
消息中间件(排队,异步(解耦)的效率更高,但是实时性不好;同步)
隐藏Linux软件名及内核版本
#显示内核版本
cat /etc/issue
cat /etc/issue.net
#清空内核版本
#方法1
>/etc/issue
>/etc/issue.net
#方法2
cat /dev/null > /etc/issue
vi /etc/motd #提示作用
RHEL 6.6 (Final)
Welcome to oldboy Linux training.
锁定系统文件
#锁定的文件 /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab
chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab
#查看用法 man chattr
清除多余用户
显示不以nologin结尾: grep -v "nologin$" /etc/passwd
为grub引导菜单加密码保护
/sbin/grub-md5-crypt #输入密码,得到字符串string
# 然后将 password --md5 string
#放在 splashimage=(hd0,0) /grub/splash.xpm.gz
# password --md5 string
#title CentOS 6 (2.6.32-504.e16.x86_64) 之间
禁止Linux系统ping
此优化不是必须的
echo "net.ipv4.icmp_echo_ignore_all=1" >>/etc/sysctl.conf
tail -1 /etc/sysctl.conf
sysctl -p #使其生效
1) 不用root管理,以普通用户的名义通过sudo授权管理。
2)更改默认的远程连接SSH服务端口,禁止root用户远程连接,甚至要更改为只监听内网IP
3)定时自动更新服务器时间,使其和互联网时间同步。
4)配置yum更新源,从国内更新源下载安装软件包
5)关闭SELinux及iptables(在工作场景中,如果有外部IP一般要打开)
6)调整文件描述符的数量,进程及文件的打开都会消耗文件描述符
7)定时自动清理邮件目录垃圾文件,防止inodes节点被占满
8)精简并保留必要的开机自启动服务(如crond、sshd、network、rsyslog)
9)Linux内核参数优化 /etc/sysctl.conf,执行sysctl -p生效
10)更改字符集,建议使用英文字符集
11)锁定关键系统文件如(/etc/passwd /etc/shadow /etc/group /etc/inittab)
12) 清空 /etc/issue /etc/issue.net
13)清除多余的系统虚拟账号
14)为grub菜单加密码
15)禁止被ping
16) 升级漏洞软件
配置Linux软件下载更新源地址
#查看yum源
cat /etc/yum.repos.d/CentOS-Base.repo
#打开 http://mirrors.aliyun.com/help/centos
命令wget
wget http://url
wget
-O #等价于--output-document=file
--spider #爬虫,检查网站是不是好的,不会下载只是检查
-T #等价于 --timeout 超时时间
--tries=2 #指定重试的次数
基础命令之less、more
空格 一屏
less 按屏(空格)或按行查看文件(回车)
more 不能向上翻
Linux目录
倒置的树状
只有一个顶点 /
(根目录)
tree -L 1 / #查看根目录下 1层 -L 层数
tree -Ld 1 / #-d 只显示目录
Linux的目录结构和磁盘分区是分离的。
根目录下的目录
#任何目录可以对应任何分区,通过挂载来实现
#磁盘设备默认没有入口的,不能访问的
#mount
mount /dev/sda1 /etc #将/dev/sda1 挂载到 /etc
/bin
/sbin
/usr
/etc
/opt
/dev
######################################
Linux磁盘的发展
第一块 系统相关 /
第二块 专门存放用户自己的程序 /usr
第三块 /home 用于存放用户的数据
/usr/local #用户自检安装的程序
/opt #第三方厂商开发的程序,等价于option
############
/usr 和 / 拥有同样的东西
#根目下 /
ll -d /bin /lib /sbin /tmp
#/usr 目录下
ll -d /usr/bin /usr/lib /usr/sbin /usr/tmp
FHS(Filesystem Hierarchy Standard):文件系统层次化标准
第一层 "/" 目录下的各个目录放什么文件数据
/etc: 放置文件系统的配置 # /etc/exports, /etc/hosts
/bin和/sbin: 放置程序及系统命令 第二层是针对 /usr(unix software resource | Secondary hierarchy) 和 /var(Variable data)这两个目录的子目录来定义。 例如:/var/log下放置系统日志文件等
提示:/var分区单独分出来,硬盘足够大。我们都有监控,剩余20%报警
FHS http://www.pathname.com/fhs
/proc
:内核及系统的虚拟文件系统
cat /proc/mounts #查看挂载信息
cat /proc/cpuinfo #查看cpu信息
cat /proc/meminfo #查看内存信息
cat /proc/loadavg #查看负载
cat /proc/version #查看系统版本
/sys
目录https://www.ibm.com/developerworks/cn/linux/l-cn-sysfs/
重点目录
网卡重要文件/etc/sysconfig/network-scripts/ifcfg-eth0
配置网络地址及GW等
1)重启网卡/etc/init.d/network restart
(影响所有网卡)
2) ifdown etho && ifup eth0
只针对eth0网卡
查看ifconfig
或者ip a
或者 ip add
/etc/resolv.conf
DNS客户端配置文件
man resolv.conf
查看用法
DNS可以在网卡配置文件里设置 (ifcfg-eth0)
DNS也可以在/etc/resolv.conf
网卡里的DNS优先于/etc/resolv.conf
/etc/hosts
局域网 主机名和IP解析
将域名解析成IP的手动配置文件表
hosts企业里的作用:
1、开发,产品,测试等人员,用于通过域名测试产品
2、服务器之间的调用可以用域名(内部DNS),方便迁移
/etc/sysconfig/network
主机名的配置文件
hostname
更改主机名 临时生效
vi /etc/sysconfig/network
永久生效
会被启动网卡调用grep '/etc/sysconfig/network' /etc/init.d/network
/etc/fstab
man fstab
: fstab - static information about the filesystems
设置文件系统挂载信息的文件,使得开机能够自动挂载磁盘分区
df -h #以人类可读的信息查看磁盘挂载信息
fstab : 6列
dd if=/dev/zero of=/dev/sdb1 bs=4096 count=100#虚拟生成一个文件系统
mkfs.ext4 /dev/sdb1 #格式化
mount -t ext4 -o loop,noatime,noexec /dev/sdb1 /mnt#挂载
df -h #查看挂载状态
umount /mnt #卸载挂载
#########################
#自动挂载
vim /etc/fstab #添加如下信息
/dev/sdb1 /mnt ext4 loop,noatime,noexec 0 0
###
mount -a #挂载
df -h #查看挂载
fstab:
出问题:修复
1)开机提示,输入密码,修复
2)救援模式Rescue ,修改/etc/fstab
(只读状态,修改只读状态 mount -o rw,remount /
)
/etc/rc.local
相当于开机启动
让一个程序开机启动
-
- chkconfig(/etc/init.d/sshd)
- 放入
/etc/rc.local
建议选择
/etc/rc.local
,服务器档案文件
/etc/inittab
系统启动时init进程设置系统的runlevel运行级别以及加载相关的级别对应启动文件设置(Linux开机启动流程)
最后一行显示默认的运行级别
查看Linux第一个启动进程ps -ef|grep init
/etc/init.d
(yum/rpm)程序启动目录
/etc/profile
定义系统的变量
/etc/profile.d
脚本或者程序 (登录时执行)
/etc/motd
登录后显示的字符串
/etc/redhat-release
:查看版本号
/etc/passwd
:用户文件
/etc/shadow
:账号的密码文件
/etc/group
:用户的组文件
/etc/gshadow
:组账号的密码文件
/etc/sudoers
:一般用visudo
/usr/local
:相当于Windows中的Programm
/usr/src
:放源代码
/var
/var/log
/var/log/messages
:系统日志,自动轮询按周 rsyslog(软件故障)
/var/log/secure
:安全日志 SSH连接日志
fsck -A
:磁盘检查(不要检查好磁盘),卸载状态检查
dmesg
: 内核回报的错误信息
/var/spool/cron/root
:定时任务的所在路径
查看设备的挂载的信息:
cat /proc/mounts
df -h
1、学会总结是学好运维的重要前提
2、通过案例或例子来总结一个技术或者命令
3、画一张逻辑图,形象的卡通记忆这个知识技术点
4、通过管道过滤数据时,最好先输出结果,然后回退再使用管道看着结果过滤
#1.如何过滤出已知当前目录下oldboy中的所有一级目录(提示:不包含oldboy目录及隐藏目录,即只能是一级目录)?
ls -l |grep "^d"
ls -lF|grep "/$"
find ./ -maxdepth 1 -type d ! -name "oldboy"
tree -Ld 1
cd - #返回上级目录,原理是 env|grep -i oldpwd
#查看刚创建的目录
ls -lrt /etc #--reverse -t:sort by modification time
添加别名 vim /etc/profile
alias grep='grep --color=auto'
:wq
. /etc/profile #使其生效
#在学习中记忆
#5、已知Apache服务的访问日志按天记录在服务器本地目录/app/log下,由于磁盘空间的限制,现在要求只能保留最近7天访问日志!请问如何解决?请给出解决办法或配置或处理。提示:可以从Apache服务配置上着手,也可以从生成出来的日志上手。
Refer
for n in `seq 14`
do
date -s "2017/04/$n"
touch access_www_`(date +%F)`.log
done
date -s "2016/08/15" #更改时间
find /oldboy/test/ -type f -name "*.log" -mtime +7 |xargs rm -f
#6.调试系统服务时,希望能实时查看系统日志/var/log/messages的变化
#法1
tail -f /var/log/messages
#法2
tailf /var/log/messages
#法3
tail -F /var/log/messages #没有文件会重试
#7.打印配置文件nginx.cong内容的行号及内容
#法1
nl nginx.conf
#法2
cat -n nginx.conf
#法3
grep -n "." nginx.conf #打印匹配的结果
#法4
grep -n ".*" nginx.conf
#法5
grep -n "$" nginx.conf
#法6
awk '{print NR,$0}' messages
#法7
sed '=' /etc/rsyslog.conf
#法8
less -N nginx.conf