linux学习笔记——基础命令

时间:2022-02-10 21:02:26

最近看了一些老男孩linux运维视频,挺不错的,特此记录一下

linux组成
gun组件 shell等
linux内核
其他软件 linux主要内核:
linux kernel2.2
linux kernel2.4
linux kernel2.6 发行商:
rehat
suse
centos
ubuntu rehat9.0之后分版本收费
分为rehat3.x rehat4.x rehat5.x rehat6.x
Fedora :rehat的一个分支,可以认为是rehat的预发布版本 Centos:rehat的另外一个分支,是把rehat里面收费的东西去掉,再编译发布 CentOS是国内使用最多的一套linux系统 ------------------------------------------------------------
分区
主分区,扩展分区,逻辑分区
egg:
5个分区(一般最多4个主分区)
1p+le(4个L)P1 L5 L6 L7 L8
2p+le(3个L) P1 P2 L5L6L7
3p+le(2L)
p+e<=4
e(扩展分区)最多只能有一个
L(逻辑分区)只能从5开始
IDE 接口 /dev/hd
hda 第一块盘
hda1 第一个分区
hda2 第二个分区
hdb 第二块盘
SCI 接口:SAS/SATA/SSD
/dev/sd*
sda 第一块盘
sda1
sda2
sdb 第二块盘
linux的分区要求
/根分区,只有一个,存放系统程序,及文件
交换分区swap,相当于win的虚拟内存,内存不够的时候会用到
/boot分区,linux系统的引导分区,一般100--200M 文件系统
ext2/ext3/ext4
ext4效率更高,建议ext4 uname -r 内核版本
uname -a 所有 ----------------------------------------------------------
#表示超级管理员
echo 111 1>xx.log 2>xc.log
1> 表示正常输出
2>表示错误输出 命令 --help 命令的简单帮助
man 命令 命令帮助
help 命令 bash的内置命令帮助 find /root/data -type f(文件) d(目录) filename
find /root/data -type f -exec rm -f {} \;
按照文件类型查找 -exec 对前面的结果进行处理
rm -f 对前面的查找的内容进行处理
{} 表示查找的内容
\;转移 特殊字符按
\ 让一个有意义的字符按,脱掉马甲
比如. 当前目录,\.就代表点 find /root/data -type f | xargs rm -f
xargs 把查找到结果在后面一个个处理 find /root -type f !-name "oldgirl.txt" | xargs rm -f
linux 命令可以接多个参数,and的作用,! 非,取反
-a and
-o or
find ./ -type d maxdepth 1
maxdepth 1 查找的深度为一级 find /log -type -f -name "*.log" -mtime +7 | xargs rm -f -mtime 文件的修改时间 -----------------------------------------------------
grep 过滤器,linux三剑客,老三 grep -v "oldbody" test.txt -v 除了oldboy -B 匹配的行前面多少行
-A 匹配的行后面多少行
-C 匹配的前后多少行
-E 可以过滤多个字符串
grep -E "hicloud|hello" xx.log grep -C 'Exception' 20 root.log
输出异常的前后20行
grep --color=auto "Exception" root.log 过滤的字符加颜色输出 -------------------------------------------------------
cat >test.xtx<<EOF
test
hello
EOF ----------------------------------------------------
sed命令,三剑客老二,过滤(擅长取行)
sed -n(取消默认完整输出) '/oldboy/p' test.txt
sed -n(取消默认完整输出) '/过滤的内容/处理的内容' test.txt -i 改变文件内容 p 打印
d delete,删除 sed -n "20,30p" xx.txt 取20--30行 sed 's#oldboy#oldgirl#g' xx.txt 把oldboy 替换成oldgirl,并未改变文件实体 -i 改变文件实体
-r 不用转义 g 代表全局替换
# 可以用其他符号替换,比如= / @做分隔符 fing ./ -type f -name "xx.txt" | xargs sed "s#olgboy#olggirl#g" eg:
old fff
2old fff
3old fff
sed -r 's#(.*) fff#\1#g' xx.txt
\1 取的是(.*)
old
2old
3old
尽可能的往后匹配 ---------------------------------------------------- mkdir -p /data01/hicloud 递归创建 yum update -y 更新所有软件到最新版本,线上系统最好不做 yum remove 会删除所有依赖的包,所以最好不用 rpm -qa tree 查询这个包(已经安装) tree /root/ 展示目录结构 /bin/cp /mnt/test.txt /tmp/ 覆盖copy
\cp /mnt/test.txt /tmp/ env 环境变量 alias 别名
ll='ls -l'
cp='cp -i' 全路径可以屏蔽这个别名,所以可以直接覆盖,不再提示 定义别名
alias rm='echo "rm can not be used "' unalias 取消别名 别名的位置
cat /root/.bashrc
所有用户生效
/etc/bashrc /etc/profiles
source /etc/profiles ---------------------------------------------- ~ 用户的家目录 root用户就代表 /root
zp 用户就代表zp seq 2 5 序列
2
3
4
5 seq 1 2 10 只打印奇数
seq 2 2 10只打印偶数 seq -s ":" 5 -s是指定分隔符 {1..10}
{a..z}
类似seq ----------------------------------------------------------------- awk 三剑客的老大
一门语言,擅长过滤(取列),打印,删除 awk 'print $1' 文件 $1第一列,$2第二列 egg:
oldboy oldgirl
ddd fff awk '{print $1}' xx.txt
结果:
oldboy
ddd awk -F ":" 'print $1' xx.txt 指定分隔符 awk -F "[, ]" '{print $1 " " $3}' xx.log
多个分隔符 $NF 最后一列
awk 'if(NR<31 && NR>19) prinf $1 "\n"' test.txt ls -l | awk '/^d/' 过滤目录 正则表达式
[root@oldboy ~]# echo ---1:----2|awk -F '[-:]+' '{print $2}'????? 1 [root@oldboy ~]# echo ---1:----2|awk -F '[-:]+' '{print $3}' 2 [root@oldboy ~]# echo ---1:::::2|awk -F '[-:]+' '{print $3}'
2 awk也可以过滤
[root@masters ~]# ifconfig eth0 | awk '/inet addr/'
inet addr:192.168.1.106 Bcast:192.168.1.255 Mask:255.255.255.0 ---------------------------------------------------
cd - 切换到上次的目录
bash
which 查找命令所在的路径,PATH的路径,
linux里面大多数的命令都会在PATH里面去找
which cp
whereid -b useradd
locate useradd linux 时间同步的问题
date -s "xxx" 设置时间 echo "ssssssss" >> /var/spool/cron/root
/dev/null 空设备 黑洞 文件描述符
ulimit -n 查看文件描述符
调整文件描述符
ulimit -nSH 65535
/etc/rc.local
less 按屏或者行查看文件 ==========================================================
用户管理 useradd oldboy
/etc/passwd
/etc/group
/etc/shadow 添加一个用户,信息会保存在这三个文件里面
passwd oldboy 为oldboy设置密码 su - root 切换到root环境
su 直接切换,环境变量还是原来的用户
所以要带- -------------------------------------------------------- 系统的优化
SELinux
/etc/selinux/config
/etc/inittaab 运行级别,一般3模式,没桌面
init 3,切换运行级别 开机自启动:
1,setup
2,chkconfig
chkconfig --level 查看服务
chkconfig --level 235 hicloud off
把hicloud自启动235级别的关掉 --------------------------------------------------------
正则表达式
.单个任意字符
*重复前面多个字符
.* 匹配任意字符
^ 以什么开头的,^old 代表以old开头
$ 以什么结尾的, /$ 以/结尾的
^$ 空行 grep "0*" root.log 匹配至少前面一个0的
grep -o "0*" root.log 精确匹配的
[abc] 匹配括号里面任意一个字符
[a-z] 匹配a-->z
[^a-z] ^在括号里面是取反,即排除a-z
0{3} 重复前面000,
grep -E "0{3}" root.log 0{3,} 至少三次
0{,3} 之多三次
0{3,5} 至少三次 sed -n "s#^.*ddr:##g" xx.log ^.*: 以目标前的匹配
Bc.*$目标后的匹配
第二个#之间不要写东西,相当于把匹配的替换成空的
[root@masters log]#
[root@masters log]# ifconfig | sed -n "2p" | sed -r 's#(^.*dr:)##g' | sed -r 's#( Bc.*$)##g'
192.168.1.106 [root@masters ~]# ifconfig eth0 | sed -nr 's#^.*dr:(.*) Bc.*$#\1#gp'
192.168.1.106
\1 取值(.*) sed -ir 's#()#oldboy#g' xx.txt
r 不用转义 主要就是用在三剑客上面 扩展的正则表达式:
主要是用在Egrep 或者grep-E + 重复一个或者一个以上的前面字符
| 查找多个字符串 -----------------------------------------------------------
内核
/etc/sysctl.conf -----------------------------------------------------------
目录:
/etc/sysconfig/network-scripts/ 网卡目录
/etc/init.d/network restart 网卡生效
ifdown eth0 停掉网卡
ifup eth0 启动网卡 /etc/resolv.conf dns配置
/etc/hosts 相当于局域网的dns,主机名和ip的解析
ip 域名
192.168.1.106 hicloud.test.com 更改主机名:
hostname hicloud 临时生效
/etc/sysconfig/network 永久生效 ------------------------------------------------------------------- /etc/fstab 有关文件系统的静态信息
开机挂在磁盘,设置文件系统挂在信息的文件,使得能够开机自动挂在 df -h 查看磁盘挂在信息 mkfs.ext4 /dev/sbd1 格式化磁盘 挂在:
1,mount -t ext4 -o noexec /dev/sbd1 /mnt
2.fstab 设置fstab自动挂在
/dev/sdb1 /mnt/ ext4 defaults 0 0 mount -a 自动挂在生效 fstab配置错了之后,系统起不来,不能挂在网络设备,只能挂在本机设备
1,开机提示,输入密码,修复
2,救援模式,rescue -------------------------------------------------------
/etc/rc.local 类似windows的启动
开机启动:
1,chkconfig
2,rc.local 建议 用/etc/rc.local,linux启动流程最后的加载文件 ---------------------------------------------------------- /etc/inittab 运行级别文件 ----------------------------------------
/etc/init.d yum/rpm安装的大部分在这下面
--------------------------------------------
/etc/profile.d 登陆的时候执行下面的脚本 -----------------------------------
usr/local 相当于win prog --------------------------------------
/var 路径
/var/log/messages 系统日志
/var/log/srcure ssh连接日志
/var/spool/cron/crontab 定时任务 ----------------------------------------------------- chkconfig
处理的命令在/etc/init.d/ sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
数字值的是运行级别,分别对应
drwxr-xr-x. 2 root root 4096 Mar 21 2015 rc0.d
drwxr-xr-x. 2 root root 4096 Mar 21 2015 rc1.d
drwxr-xr-x. 2 root root 4096 Mar 21 2015 rc2.d
drwxr-xr-x. 2 root root 4096 May 21 06:27 rc3.d
drwxr-xr-x. 2 root root 4096 Mar 21 2015 rc4.d
drwxr-xr-x. 2 root root 4096 Mar 23 2015 rc5.d
drwxr-xr-x. 2 root root 4096 Mar 21 2015 rc6.d 比如运行界别是3
在rc3.d下面
S***sshd-->../init.d/sshd 代表on状态
K***sshd-->../init.d/sshd 代表off状态
也可自己创建删除软连接,实现on off的状态
S55sshd -> ../init.d/sshd
55是怎么来的?
是在服务脚本里面的配置的,前几行 #!/bin/bash
#
# sshd Start up the OpenSSH server daemon
#
# chkconfig: 2345 55 25
# description: SSH is a protocol for secure remote shell access. \
# This service starts up the OpenSSH server daemon.
# ----------------------------------------------------------------------
tar 打包以及压缩,尽量切换到打包文件的上一级目录
tar zcvf etc.tar.gz /etc 压缩
tar tf etc.tar.gz 查看里面的文件 ------------------------------------------
cut
cut -d" " -f2,3 xx.log 指定分隔符,取2,3列 ----------------------------
wc -l /etc/passwd 显示行数
ps -ef | grep tomcat | wc -l ---------------------------