Linux是一套免费使用和自由传播的操作系统。
特点如下:
开源免费
安全稳定
可移植性好
高性能
Linux常见的发行版本
Debian
Kali Ubuntu
Redhat
Fedora CentOS(企业版) Oracle Linux(企业版)
OpenSUSE
Linux使用领域
应用服务器
数据库服务器
网络服务器
虚拟化云计算
嵌入式领域
个人PC
移动手机
Linux是树形结构的文件系统,其中/是系统的根目录,其他所有目录都是它的子节点。
ll= ls -l
ls -al /home
在linux中以 . 开头的文件都是隐藏的文件
查看/home目录下所有文件或目录(包含隐藏的文件,隐藏文件都是.xxx)
-a:(all)全部⽂件,包含隐藏⽂件
-l: (list)以列表的形式显示,可以看⽂件类型、权限、⼤⼩、修改⽇期
ls -al /usr/bin/ | more 分屏查看
常用通配符:
*代表任意字符。如:ls *.txt
? :表示一个任意字符
[abcd] :表示可以匹配a、b、c、d中的任何一个字符 例如:ls 1[ab]h.txt
[a-f] :匹配从a到f范围内的的任意一个字符 例如:ls 1[a-b]h.txt
文件类型
普通文件(-)
目录(d)
符号链接(l)
cd:(change directory)
快速回家: cd ~
/home/用户名
touch 234.txt 345.txt 创建多个文件
mkdir -p 1/2/3 创建多级目录
mkdir -p /data/mariadb/{logs,conf,data} 创建多个文件夹
rm -rf 文件或文件夹
cp -rf 源文件 目标文件
cp -rf /home/admin/123.txt /home/admin/124.txt
cp -rf /home/admin/123.txt /home/admin
-r: 复制文件夹下所有的内容
-f: 强制性复制及覆盖
mv 源文件 移动的目标地址
mv也可以重命名 如:mv 文件1 文件2
mv /home/admin/123.txt /home/admin/124.txt
cat:一次打开文件全部内容(适合查看少量内容)
head: 从头开始查看指定行数内容
默认显示日志文件前10行内容。
参数:-n 指定行数
head -15 xx.log 显示日志文件的前15行内容
tail: 从尾部指定 行数查看日志
默认显示日志文件最后10行内容
-n:读取的行数
-f:动态查看内容
tail -10 /etc/passwd 查看后10行数据
tail -n 100 logs/catalina.out 看Tomcat尾部最近100行
tail -f catalina.log 实时显示日志的文件信息
查看一个log文件后300行有关error的错误?如何将这些错误下载下来
tail -300f xx.log | grep error > error.log
more/less:分屏查看(查看比较大的文件)
more命令用于分屏显示文件内容,每次显示一页内容
适用于查看文件内容较多的文件
查询脚本SQL总数
vi 或 vim
命令模式:输⼊命令(删除、打开插⼊模式、打开末⾏模式)
dd:删除光标所在⾏内容
插⼊模式:
i、a、o 任意⼀个键就可以打开插⼊模式
退出插⼊模式:按esc键->回到命令模式
末⾏模式:
从命令模式按下:冒号键盘(shi!+;)
退出保存: :wq w->保存 ;q->退出;
显示行号
vim打开文件之后输入:set nu
文件中查找关键字
通过 /关键字 查找出现多个结果,使用 n 字符切换到下一个
grep 是一个强大的文本搜索工具,允许对文本进行模糊查找(正则表达式)
grep -n 内容 xxx.log
grep -n error p2p.log
-v :显示不包含匹配文本的所有行(相当于取反)
-n:显示匹配的行及行号
-i:忽略大小写
grep 常用正则表在式:
^a : 搜索行首内容以a文本开头的行。 例如: grep –n '^a' 1.txt
ke$: 搜索行尾内容以ke文本结尾的行。例如: grep –n 'ke$' 1.txt
[Ss]igna[Ll]: 匹配[]中的任意一个字符,搜寻匹配单词为 SignaL、Signal、signaL、signal的行; 例如: grep –n ' [Ss]igna[Ll] '
grep -v 是反向查找的意思,比如 grep -v "grep" 就是查找不含有 grep 字段的行
find 搜索路径 -iname "⽂件名关键字"
find / -iname "abc.txt"
-i:忽略⼤⼩写
路径省略掉表示在当前目录下查找文件
文件名可以通过通配符来表示
find . -name test.sh 查找当前目录下所有名为test.sh的文件
find . -name '*.sh' 查找当前目录下所有后缀为.sh的文件
赋权字⺟法
chmod u+r ⽂件
u:表示文件所属用户
g:表示文件所属的用户组
o:其他⽤户
a:所有⽤户
r->读,w->写,x->执行,-->空
4->读,2->写,1->执行,0->空
chmod 变更文件或目录的权限
chmod u=rwx,g=rx,o=rx a.txt
u代表所有者,x代表执行权限。 + 表示增加权限。
chmod a+x /etc/init.d/nginx 赋予所有用户执行的权限
权限设置说明: + : 增加权限 - : 撤消权限 = : 设定权限
数字法
chmod 777 ⽂件 授最高权限
chmod 755 a.txt 数字755代表上面属主 属组 其他用户数字加起来代表的权限
chmod 000 a.txt 授最低权限
chown 变更文件或目录改文件所属用户和组
chown u1:public a.txt :变更当前的目录或文件的所属用户和组
chown -R u1:public dir :变更目录中的所有的子目录及文件的所属用户和组
chown mysql.mysql -R /usr/local/mysql :修改权限为 mysql组 mysql用户
sudo 其他用户权限不够输入命令
软链接
软链接只是指向源文件的一个链接,类似于windows的快捷方式
说明:快捷⽅式,源⽂件删除,快捷⽅式不能⽤。
语法: ln -s 源⽂件 链接文件
源文件要使用绝对路径,不能使用相对路径,这样可以方便移动链接文件后,仍然能够正常使用
软链接可以链接目录
选项:-s 建⽴软连接选项
ln -s webapp_20201222 last
硬链接(和软连接类似,这个是复制了一份)
说明:复制源⽂件,源⽂件删除不影响使⽤。
语法: ln 源⽂件 ⽬标⽂件
删除软连接
rm -rf last
压缩(tar)
命令: tar -zcvf 压缩⽂件名.tar.gz 要压缩的⽂件
示例: tar -zcvf tpshop.tar.gz /home/admin/tpshop/*
选项
z:调⽤gzip压缩⼯具
c:创建打包文件
v:列出归档解档的详细过程,显示进度
f:指定档案文件名称,f后面一定是.tar文件,所以必须放选项最后
t:列出档案中包含的文件
解压(tar)
tar -zxvf 压缩包.tar.gz
tar -zxvf tpshop.tar.gz
tar -zxvf MySQL-5.6.22-1.el6.i686.rpm-bundle.tar -C /root/mysql 解压到指定目录
选项:x:解包
压缩与解压(zip)
压缩: zip ⽂件名.zip ⽬录/*
解压 :unzip ⽂件名.zip
提示 :如果要解压到指定⽬录使⽤ -d 路径⽬录;如: unzip -d /home/test ⽂件.zip
压缩与解压(xxx.tar.bz2)
实际应用是在tar 选项中增加一个-j选项来调用biz2实现打包和压缩的过程
压缩文件: tar -jcvf 打包文件.tar.bz2 被压缩的文件/路径
解压缩文件: tar -jxvf 打包文件.tar.bz2
将左侧执行结果保存到文件
>:向文件写入内容,如果文件中已有内容,会进行覆盖。
>>:向文件追加内容,不会覆盖原有内容
ls -l /home > a.txt
例如
ip a > ip.txt
echo 哈哈哈 > ip.txt echo是显示的意思,回显到控制台。
ls -al /usr/bin/ > bin.txt 将目录下文件写入到文本。
tail -20 ping.log | grep 30 > 1.txt
作用:将左侧命令执行结果 通过管道符 作为右侧命令数据的来源
提示:管道符,通常配合grep命令使用
示例:tail -20 ping.log | grep 30
ls -al /usr/bin/ | more 分屏查看
重启
reboot 执行命令后立即重新启动操作系统。
shutdown -r now 重新启动操作系统,shutdown会给别的用户提示
关机
shutdown 执行命令后,提示一分钟后关闭操作系统。
shutdown -h now 立刻关机,其中now相当于时间为0的状态
shutdown -h 20:25 :系统在今天的20:25 会关机
shutdown -h +10 :系统再过十分钟后自动关机
显示当前所在目录:pwd
清屏:clear
帮助:--help 例如:ls --help
⼿册: man 命令 例如:man ls 退出:q
who或者w:显示目前登入系统的用户信息
-q或--count : 只显示用户的登录账号和登录用户的数量
-u或--heading : 显示列标题
查看应用的安装路径
whereis nginx
hostname 查看当前主机名
cat /proc/version 查看当前操作系统版本信息
cat /etc/issue 查看版本当前操作系统发行信息
uname 显示系统信息
uname -a 显示本机详细信息
依次为:内核名称(类别),主机名,内核版本号,内核版本,内核编译日期,硬件名,处理器类型,硬件平台类型,操作系统名称
date 显示当前系统时间
date -s “2014-01-01 10:10:10“ 设置系统时间
du 显示目录或文件的大小。
du –h 显示当前目录的大小
du -sh ./logs 查看日志文件所占空间大小
du -sh * 看日志文件的大小(进入到logs下)
free 显示内存状态
free –m 以mb单位显示内存情况
top命令
top命令用于实时动态查看系统进程相关信息
top:相当于windows中的任务管理器,可以查看瞬时进程情况及CPU、内存情况。
常⽤:性能测试使⽤
参数:
p: 根据CPU使用率大小降序显示进程信息
m:根据内存的大小降序显示进程信息
q: 退出top命令或者按 ctrl+c也可以退出
which: 查找⼯具-查找应⽤程序或命令所在位置
例如:which mysql、which ls;
不可找⽂件
curl验证nginx启动成功
curl IP:PORT #端口80可以省略不写
远程连接: ssh ⽤户名@服务器ip地址
切换登陆: ssh -l test -p 22 192.168.19.128
远程上传⽂件: scp 要上传⽂件的本地路径及⽂件 服务器登录⽤户名@服务器IP:上传的位置
scp -r cytec [email protected]:/usr/local/src/
mysql -uroot -p123456 -h 172.17.18.14:mysql限制了本机登录:只能登录别的机器的
Linux查看当前操作系统版本信息 cat /proc/version
Linux version 2.6.32-696.el6.x86_64 ([email protected]) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC) ) #1 SMP Tue Mar 21 19:29:05 UTC 2017
2.6.32-696.el6.x86_64为内核版本
Linux查看版本当前操作系统发行信息 cat /etc/issue 或 cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
查进程
ps -aux
ps -ef
以上两个没有区别
常用选项说明:
-a : 显示终端上的所有进程,包括其他用户的进程
-u : 显示进程的详细状态
-x :显示没有控制终端的进程
ps 正在运行的某个进程的状态
ps -ef(相当于查看window进程) | grep java寻找进程中包含java关键字的,grep的不算。
jps 查看进程,jdk中的命令,Bootstrap就是Tomcat的进程。
jps -l信息会全一点
杀进程
kill 进程PID
强制删除: kill -9 进程PID
-9:强制删除选项
如何使⽤⼀条命令来完成杀java进程
ps -ef | grep java | grep -v grep | awk '{print $2}' | xargs kill -9
思路:
1、获取JAVA进程pid
2、使用kill -9 pid
查看系统中开放哪些端⼝
netstat 可以查看当前系统网络状态及对应软件使用的端口
netstat -anput 想要知道系统中有哪些端⼝已被使⽤,就使⽤此命令
netstat -ntulp | grep 端口号 查询指定端口
netstat -lanp | grep 6379 根据端口号得到其占用的进程的详细信息
netstat –anopt|grep sshd 查看ssh的端口
ss -anp | grep 21 查看端口
常用选项说明:
常用参数-anplt
-a 显示所有活动的连接以及本机侦听的TCP、UDP端口
-l 显示监听的server port
-n 直接使用IP地址,不通过域名服务器
-p 正在使用Socket的程序PID和程序名称
-r 显示路由表
-t 显示TCP传输协议的连线状况
-u 显示UDP传输协议的连线状况
-w 显示RAW传输协议的连线状况
lsof查看系统监听端口
lsof(list open files)是一个列出当前系统打开文件的工具,可以查看系统中正在使用端口的详细信息
lsof -i :如果不给出条件,则默认显示所有进程打开的所有
lsof -i:端⼝号 列出使用端口3306的进程信息,此命令必须在root账户下使⽤
添加账户
useradd -g 组 ⽤户名
useradd -g root user01
useradd test 添加test用户
useradd test -d /home/t1 指定用户home目录
删除用户
userdel test 删除test用户(不会删除home目录)
userdel –r test 删除用户以及home目录
修改密码
passwd 账户名 用于设置指定用户的密码 (执行命令的用户必须为root)
passwd user01,为user01用户设置密码
切换⽤户
su ⽤户名
su - : 切换到root用户
su root --> 需要填写root的密码
由普通用户切换到其他用户时,需要输入密码
命令: exit
多⽤户退出原理:
将nginx服务加入chkconfig管理列表:
chkconfig --add redis
chkconfig --add /etc/init.d/nginx
检查mysqld服务是否已经生效
chkconfig --list mysqld
chkconfig --list
设置开机自动启动
chkconfig nginx on
关闭开机自动启动
chkconfig nginx off
设置开机启动
systemctl enable nginx
关闭开机启动设置
systemctl disable nginx
创建服务
systemctl enable nginx.service
使用服务命令
systemctl status nginx
启动redis
service redis start
关闭redis
service redis stop
开机自启文件配置位置
/etc/init.d 指向-> /etc/rc.d/init.d
mysqld
nginx
redis
安装包在线下载
wget http://download.redis.io/releases/redis-5.0.7.tar.gz
rpm查找命令
rpm -qa | grep openssl
rpm查找安装位置
rpm -ql keepalived
安装rpm包
rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm
卸载nginx安装文件
rpm -e nginx-1.20.2-1.el7.ngx.x86_64
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
gem包安装
gem install redis-3.0.gem
行转列
获取linux操作系统ip地址: ip a
ifconfig eth0 up 启用eth0网卡(相当于网络设置里边的开启和关闭网卡)
ifconfig eth0 down 停用eth0网卡(在客户端停用网卡,客户端就连不上了,需要到服务器开启网卡才能连接)
ping 192.168.0.1 探测网络是否畅通。
ip add show eth1 从eth1网卡中查看当前IP情况