Linux
Linux
[TOC]
一、基础
一、入门
1、介绍
1、Linux主要发行版
Ubuntu乌班图、RedHat红帽、CentOS、Debain蝶变、Fedora、SuSE、OpenSUSE示意图
2、安装vm和Centos
1、先安装vm
其他地址:www.novmd.com/windows/740…
2、再安装Linux(CentOS7.6/CentOS8.1)
7.6网址(现在主流):vault.centos.org/7.6.1810/is…
mirrors.aliyun.com/centos/7/is…
8.1网址(未来主流):mirrors.aliyun.com/centos/8.1.…
3、vm和Linux的关系
4、开始安装centos
3、网络连接的三种模式
4、虚拟机克隆
5、虚拟机快照
6、虚拟机的迁移和删除
7、安装vmtools
注意要使用root账号进行登录
cd/opt进入到opt目录
tar -zxvf xxx.tar.gz 解压
cd vmware...进入到解压后的目录
8、设置共享文件夹
9、Linux目录结构
2、实操
1、远程登录到Linux服务器
2、安装Xshell6(远程操作)和XFTP6(文件的上传和下载)
下载free-for-home-school版本
下载地址:www.netsarang.com/en/free-for…
目前官网7版本免费提供学生使用
左边为window(主机)的文件系统,右边为Linux系统
怎么解决xftp7中文乱码问题?
在文件->会话属性->选项->编码
选择utf-8即可
小tips:Xshell7中输入命令reboot,能够远程重启Linux系统
3、Vi和Vim编辑器
Linux系统会内置vi文本编辑器
Vim具有程序编辑的能力,可以看作是vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计,代码补完,编译以及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
使用vim编写一个Hello.java程序,保存,步骤说明和演示。
退出编辑模式:按esc按键
进入命令行模式:输入冒号:即可
在命令行模式下输入wq:保存并退出(write and quit)
tab键有快速补全功能
q!强制退出并且不保存
w是保存
q是退出,如果未保存就退出,会有提醒
4、vi和vim的快捷键
粘贴输入P即可
5、开机、重启、和用户登录注销
只输入shotdown默认一分钟后关机
如果在普通用户下切换到root时,输入logout会回退到普通用户
6、用户管理
pwd显示当前在哪个目录
passwd 用户名:为用户设置密码
userdel 用户名 只删除用户,不删除用户家目录
userdel -r 用户名 删除用户以及其家目录
只会显示第一次登录的用户
用户组方便管理,可以统一附加权限
clear清屏
bashell tcshell cshell
组内用户列表被隐藏起来了
7、实用指令
运行级别
找回root密码
1、首先,启动系统,进入开机界面,在界面中按“e”进入编辑界面。如图
2、 进入编辑界面,使用键盘上的上下键把光标往下移动,找到以““Linux16”开头内容所在的行数”,在行的最后面输入:init=/bin/sh。如图
3、 接着,输入完成后,直接按快捷键:Ctrl+x 进入单用户模式。
4、 接着,在光标闪烁的位置中输入:mount -o remount,rw /(注意:各个单词间有空格),完成后按键盘的回车键(Enter)。如图
5、 在新的一行最后面输入:passwd, 完成后按键盘的回车键(Enter)。输入密码,然后再次确认密码即可(韩顺平提示: **密码长度最好8****位以上,**但不是必须的), 密码修改成功后,会显示passwd.....的样式,说明密码修改成功
6、 接着,在鼠标闪烁的位置中(最后一行中)输入:touch /.autorelabel(注意:touch与 /之间有一个空格),完成后按键盘的回车键(Enter)
7、 继续在光标闪烁的位置中,输入:exec /sbin/init(注意:exec与 /后面有一个空格),完成后按键盘的回车键(Enter),等待系统自动修改密码(韩顺平提示:这个过程时间可能有点长,耐心等待),完成后,系统会自动重启, 新的密码生效了
帮助指令
在linux下隐藏文件是以 . 开头的
查看所有文件,方式: ls -a
单列查看文件(详细):ls -l 或ll
也可以组合起来用:如 ls -la 或 ls -al
后面还可以加文件路径进行定位查看 如: ls -la /home
文件目录类
/ 是根目录,根目录下有root和home目录,root目录是root用户的家目录,home下还有其他用户的家目录
创建多级目录:mkdir -p 多级目录路径
cp hello.txt /home/bbb
把cp换成\cp --> 强制不覆盖
也可以移动并重命名
管道命令:把前面的结果交给下一个指令
cat -n /etc/profile | more 【空格下一页,回车键下一行】
输出环境变量:PATHPATH PATHHOSTNAME
ctrl+c退出监控
如果指令后面的文件不存在,会自动创建
cal显示当前日历
ln -s/root /home/myroot
删除跟删除文件操作一样
history
history 10
!5
时间日期类
搜素查找类
find /home -name hello.txt
文件大小单位:kMG
find /opt -user nobody
find / size +200
ls -lh:h能够显示文件大小
which指令,可以查看某个指令在哪个目录下,比如ls指令在哪目录
which ls
cat /home/hello.txt | grep -n yes
grep -n yes /home/hello.txt
压缩和解压类
zip -r myhome.zip /home/
tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt
tar -zcvf myhome.tar.gz /home/
tar -zxvf pc.tar.gz
tar -zxvf myhome.tar.gz -C /opt/tmp2/
-C指定位置
Linux组管理和权限管理
特别说明:第二个命令,用户需要有进入到新目录的权限
赋值,添加,删除
文件为绿色代表为可执行文件,即有可执行的权限
修改所在组
递归带上参数:-R
rwx作用于目录?
r代表可以用ls查看目录下内容
x代表可以进入该目录
w代表可以在目录下创建文件/目录,或者删除文件/目录
定时任务调度
每分钟执行一次 : ls -l /etc/ > /tmp/to.txt
案例2:
第一种:写两条命令
第二种:写一个脚本程序my.sh
内容如下
date >> /home/mycal
cal >> /home/mycal
要赋予所有者文件执行权限
chmod u+x my.sh
加入到crond调度
案例3:
crontab -e
0 2 * * * mysqldump -u root -p123456 testdb > /home/db.bak
ps -ef | grep atd 过滤查看当前atd进程是否启动
案例1:
at 5pm + 2 days
/bin/ls /home
案例2:
atq 查看没有执行的任务
案例3:
at 5pm + 1 days
date > /root/date100.log
案例4:
at now + 2 minutes
date > /root/date200.log
案例5:
atrm 编号,删除指定编号的任务
Linux磁盘分区、挂载
lsblk可以查看硬盘分区挂载到目录的情况
带-f 参数
uuid:分区40位唯一标识符
MOUNtPOINT:挂载点
添加硬盘
分区
如果无法删除输入内容就按住CTRL再删除
格式化磁盘
挂载
设置自动永久挂载
磁盘使用情况
1、ls -l /opt | grep "^-" | wc -l
2、ls -l /opt | grep "^d" | wc -l
3、ls -lR /opt | grep "^-" | wc -l
4、ls -lR /opt | grep "^d" | wc -l
5、tree /home/
注意:如果没有tree,则使用yum install tree 安装
8、网络配置
9、进程管理
top指令
查看sshd的父进程信息
ps -ef | grep sshd
案例1:
先查看sshd下非法用户进程对应的进程编号
kill 进程编号
案例2:
查看sshd进程对应的进程编号
kill 进程编号
恢复:/bin/systemctl start sshd.service
案例3:
killall gedit
gedit 是文本编辑器
案例4:
ps -aux | grep bash 查看bash对应进程号
kill -9 进程编号
空格修改星好,关闭自启动,tab键退出
把network在3运行级别,关闭自启动
chkconfig --level 3 nerwork off
chkconfig --level 3 network on
对3和5两个级别都生效
systemctl staus firewalld
netstat 可以查看端口信息
10、动态监控进程
11、RPM与YUM
12、搭建JavaEE环境
word文档
-
新建文件夹/opt/mysql,并cd进去
-
运行wget dev.mysql.com/get/mysql-5…
PS:centos7.6自带的类mysql数据库是mariadb,会跟mysql冲突,要先删除。
-
运行tar -xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar
-
运行rpm -qa|grep mari,查询mariadb相关安装包
-
运行rpm -e --nodeps mariadb-libs,卸载
-
然后开始真正安装mysql,依次运行以下几条
rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm
7.运行systemctl start mysqld.service,启动mysql
8.然后开始设置root用户密码
Mysql自动给root用户设置随机密码,运行grep "password" /var/log/mysqld.log可看到当前密码
9.运行mysql -u root -p,用root用户登录,提示输入密码可用上述的,可以成功登陆进入mysql命令行
10.设置root密码,对于个人开发环境,如果要设比较简单的密码(生产环境服务器要设复杂密码),可以运行
set global validate_password_policy=0; 提示密码设置策略
(validate_password_policy默认值1,)
11.set password for 'root'@'localhost' =password('hspedu100');
12.运行flush privileges;使密码设置生效
大数据篇
13、Shell编程
shell脚本的多行注释
:<<! 内容 !
如果希望希望将expr的结果赋予某个变量,使用``包含起来
案例1:
if [ "ok" = "ok" ]
then
echo "equal"
fi
案例2:
if [ 23 -ge 22]
then
echo "大于"
fi
案例3:
if [ -f /root/shcode/aaa.txt ]
then
echo "存在"
fi
if [ $1 -ge 60 ]
then
echo "及格了"
elif [ $1 -lt 60 ]
then
echo "不及格"
fi
case $1 in
"1")
echo "周一"
;;
"2")
echo "周二"
;;
*)
echo "other..."
;;
esac
案例1:
for i in "$*"
do
echo "num is $i"
done
输出一次,因为$*把全部参数当作一个整体
for i in "$@"
do
echo "num is $i"
done
输出多次,因为$@把全部参数分别对待
案例1:
SUM=0
for (( i=1; i<=100; i++ ))
do
SUM=$[$SUM+$i]
done
echo "SUM=$SUM"
SUM=0
for (( i=1; i<=$1; i++ ))
do
SUM=$[$SUM+$i]
done
echo "SUM=$SUM"
SUM=0
i=1
while [ $i -le $1 ]
do
SUM=$[$SUM+$i]
i=$[$i+1]
done
echo "SUM=$SUM"
basename /home/aaa/test.txt .txt
返回 test
dirname /home/aaa/test.txt
案例1:
#定义函数
function getSum() {
SUM=$[$n1+$n2]
echo "和是:$SUM"
}
#输入两个数
read -p "请输入第一个数:" n1
read -p "请输入第二个数;" n2
#调用函数
getSum $n1 $n2
14、Ubuntu
安装
15、APT软件管理和远程登录
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-security main restricted universe multiverse
# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-proposed main restricted universe multiverse
sudo apt-get update
16、CentOS8.1的使用
二、高级
1、日志管理
vim /etc/rsyslog.conf
2、定制自己的Linux系统
操作步骤:
3、Linux内核源码
yum info kernel -q //检测内核版本,显示可以升级的内核
查看当前内核:uname -a
yum update kernel //升级内核
yum list kernel -q 查看已安装的内核
4、Linux系统备份与恢复
安装dump:yum -y install dump
安装restore:yum -y install restore
5、Linux可视化管理-----webmin和bt运维工具
地址:download.webmin.com/download/yu…
命令:wget download.webmin.com/download/yu…
还有任务调度,mysql等
yum install -y wget安装wget指令
&&先执行前面的在执行后面的
6、Linux面试题---(腾讯、美团、百度、滴滴)
1、
cut -d '/':以/为分隔符进行截取
sort 排序从小到大,加-nr :排序从大到小
uniq -c 统计次数
2、
netstat -an | grep ESTABLISHED
awk -F " " '{print $5}':以空格为分割符,打印第五部分
一定要先排序再统计再排序
因为uniq -c是根据连续多少个1相同的进行统计的
1、
vim /etc/my.cnf
在【mysqld】下写入一句话:skip-grant-tables
重启mysqld服务:service mysqld restart
重新进入mysql,此时无需密码
在mysql数据库中有user表:
use mysql
update user set password=password('new_password') where user='root'; mysql> flush privileges; mysql >exit;
这样就把密码修改了, 改完了密码之后,需要恢复权限:把之前对/etc/my.cnf的 skip-grant-tables 删掉
然后执行 service mysqld restart;
然后mysql -u root -p
Enter Password :你的新密码;
2、
access.log
192.168.130.21 aaa.html
192.168.130.20 aaa.html
192.168.130.20 aaa.html
192.168.130.20 aaa.html
192.168.130.23 aaa.html
192.168.130.20 aaa.html
192.168.130.25 aaa.html
192.168.130.20 aaa.html
192.168.130.20 aaa.html
192.168.130.25 aaa.html
192.168.130.20 aaa.html
cat access.log | awk -F " " '{print $1}' |sort |uniq -c |sort -nr| head -2
head -2 查看前2行
3、
tcpdump -i ens33 host 192.168.200.1 and port 22 >> /opt/interview/tcpdump.log
4、
chattr(change attribute)
chattr +i /etc/passwd/ 锁定
也可以隐藏命令,改名
which命令. which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。. 也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。. 我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索:. which 查看可执行文件的位置。. whereis 查看文件的位置。. locate 配合数据库查看文件位置。. find 实际搜寻硬盘查询文件名称。. which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。.
chattr -i /etc/passwd:解锁
Tripwire官网:www.tripwire.com/
1、能读,不能修改,能删除
2、不能,进不去目录
3、能读,不能修改,不能删除
4、能读,不能修改,能删除
看word笔记
1、
netstat //网络状态监控
top //系统运行状态
lsblk //查看硬盘分区
find //查看
ps -aux 查看运行进程
chkconfig //查看服务启动状态
systemctl //管理系统服务器
2、
top
iotop (yum install iotop)
df -lh
netstat -tunlp
ps -aux
3、
cat t2.txt | awk -F " " '{sum+=$2} END {print sum}'
1、
if [ -f 文件名 ] then echo "存在" else echo "不存在" fi
2、
3、
grep -r "cat" /home | cut -d ":" -f 1
4、
find /home -name "*.*" | xargs wc -l
xargs显示行数和总行数
1、Nginx、Haproxy、keepalived、LVS
2、
vim mail.sh
#!/bin/bash
ca /var/spool/ && /bin/tar zcvf /home/mail-`date +%Y-%m-%d_%H%M%S`.tar.gz mail/
crontab -e
30 20 * * * /root/mail.sh
3、
①对linux的架构的优化,和原则分析(示意图)
②对linux系统本身的优化-规则
- 不用root,使用sudo提升权限
- 定时的自动更新服务升级,使用npdate npt1.aliyun.com,让crond定时更新
- 配置yum源,指向国内镜像(清华,163)
- 配置合理的防火墙策略,打开必要的端口,关闭不必要的端口
- 打开最大文件数(调整文件描述的数量)vim /etc/profile ulimit -SHn 65535
- 配置合理的监控策略
- 配置合理的系统重要文件的备份策略
- 对安装的软件进优化,比如Nginx,apache
- 对内核参数进行优化 /etc/sysctl.conf
- 锁定一些重要的系统文件 chattr /etc/passwd /etc/shadow /etc/inittab
- 禁用不必要的服务 setup,ntsysv
本文作者:_xiaolin
本文链接:https://www.cnblogs.com/SilverStar/p/17415627.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。