Linux使用详解,10分钟带你玩转Linux基础操作
欢迎前往CSND查看,我的博客原文https://blog.csdn.net/smilehappiness/article/details/105176667
@
Linux使用总结
1.Linux介绍
- 摘自-百度百科
Linux,全称GNU/Linux,是一套免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年第一次释出,它主要受到Minix和Unix思想的启发,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux有上百种不同的发行版,如基于社区开发的debian、archlinux,和基于商业开发的Red Hat Enterprise Linux、SUSE、oracle linux等。
- 历史背景
Linux内核kernel最初是由芬兰人李纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的,在1991年10月5日第一次正式向外公布;
在linux发布之前,有一种操作系统叫unix,由于价格昂贵不开放源码,所以李纳斯·托瓦兹(Linus Torvalds)决心要开发自己免费的操作系统,Linux借鉴了unix的思想,但没有一行unix的代码,linux系统是从unix系统发展出来的;
Linux 英文解释为Linux is not Unix
,现在业界有一种说法叫:类Unix
;
- Linux构成
Linux是由Linux Kernel+软件包构成;
- 发行版本
Linux的发行版就是将Linux内核与应用软件做一个打包。
目前市面上比较知名的Linux发行版有:
RedHat、CentOS、Ubuntu、Fedora、Debian、Aliyun Linux、SUSE Linux、Open SUSE、CoreOS、FreeBSD等;
一般来讲Web应用都选择CentOS,像Java、PHP等都是CentOS操作系统;ASP、.NET、SQL Server微软的一系列组件选择Windows Server操作系统;
2.Linux常用远程连接工具
建议童鞋们买个服务器,阿里云、华为云都可以,Linux使用必须多练习,才能达到熟练掌握。
- 远程连接工具
SecureCRT
官网下载:https://www.vandyke.com
XShell
官网下载:https://www.netsarang.com/zh/xshell/
Putty
下载链接:https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
XFTP
下载链接:https://www.netsarang.com/zh/xftp/
WinSCP
下载链接:https://winscp.net/eng/download.php
以上几个远程连接工具简单说明一下:
SecureCRT这个工具可以直接连接并且上传文件,当然,如果上传文件到服务器,建议使用XFTP或者WinSCP,速度会快一些。
XShell和Putty,使用哪个都行,可以连接远程Linux服务器。
推荐使用:Xshell + WinSCP组合
3.Linux常用命令总结
3.1 Linux特色目录
.
..
-
~
一个点是表示当前目录,两个点是表示上一级目录,一个横杠表示上一个工作目录,比如你cd -
就返回到上一个工作目录,~表示用户的根目录(/root);
3.2 磁盘管理
cd
目录进入某个目录
cd /info/a
进入多个目录
cd
该命令可以切换目录
pwd
显示当前目录
cd ..
返回上一级目录
cd /
返回根目录
fdisk -l
查看新的分区
ll
纵向列出当前目录下目录及文件
ll -a
可以额外展示隐藏的目录和文件
ls
横向列出当前目录下目录及文件
ls -a
可以额外展示隐藏的目录和文件
ll 和 ls命令区别:ll纵向展示目录和文件,并且展示目录的组、拥有者和权限,而ls仅仅横向展示目录和文件
ll -h
可以列出目录以及目录的大小
dir
列出当前目录下的目录及文件
df
查看系统磁盘空间使用情况,df命令可以查看一级文件夹大小、使用比例、档案系统及其挂入点,但对文件却无能为力
df -h
查看系统磁盘空间使用情况,参数-h 表示使用「Human-readable」的输出,也就是在档案系统大小使用 GB、MB 等易读的格式,使得看起来更直观
上面的命令输出的第一个字段(Filesystem)及最后一个字段(Mounted on)分别是档案系统及其挂入点。我们可以看到 /dev/sda1 这个分割区被挂在根目录下。接下来的四个字段 Size、Used、Avail、及 Use% 分别是该分割区的容量、已使用的大小、剩下的大小、及使用的百分比。 FreeBSD下,当硬盘容量已满时,您可能会看到已使用的百分比超过 100%,因为 FreeBSD 会留一些空间给 root,让 root 在档案系统满时,还是可以写东西到该档案系统中,以进行管理。
df -T
可以用来查看分区的文件系统
du
查看文件和目录的磁盘空间使用情况,du可以查看文件及文件夹的大小
du -h
查看文件和目录的磁盘空间使用情况
3.3 文件管理
mkdir
创建目录(文件夹)mkdir -p file1/file2
递归创建多个目录mkdir -v file4
创建新目录都显示创建信息mkdir -vp {hello/,maven/}
一个命令创建多个目录结构参数解释:
-p
, --parents 可以是一个路径名称。
此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录
-v
, --verbose 每次创建新目录都显示信息
touch
创建空文件或将文件的最后修改时间改为当前时间rm -f
删除文件或目录rm -rf
递归删除目录以及目录包含的所有文件mv 文件(夹)
重命名或者将文件(夹)移动到指定目录
命令格式: mv [参数] 源文件或目录 目标文件或目录参数说明:
-b :若需覆盖文件,则覆盖前先行备份。
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标文件已经存在,且 source 比较新,才会更新(update)
-t : --target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后。
-v:显示过程cat 文件名
将整个文件内容输出到控制台more 文件名
逐屏输出(按空白键space就往下一页)less 文件名
逐屏输出(按PgUp、PgDn上下翻页),到结束的时候退出按 qhead 文件名
显示头10行tail 文件名
显示末尾10行cp
文件复制cp -rf
递归复制目录find
查找文件,比如:find ./ -name 文件名称
find ./ -mtime +5
查找5天前修改过的文件which
在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果,这条命令主要是用来查找系统 PATH目录下 的可执行文件。说白了就是查找那些我们已经安装好的可以直接执行的命令。比如which mkdirwhereis
查找文件,主要用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s),如果省略参数,则返回所有信息。
3.4 系统设置
-
ps -aux
查看系统进程 -
ps -ef
查看系统进程 -
kill pid
杀掉进程 -
kill -9 pid
强制杀掉进程 -
date
显示或设置系统日期和时间 -
echo $LANG
显示当前语言环境 -
locale
查看是否有中文语言包,如有zh cn表示已经安装了中文语言包 -
uname
查看系统信息 -
cat /etc/centos-release
查看当前centos版本(CentOS Linux release 7.6.1810 (Core)) -
who
显示当前已登录的用户信息 -
whoami
当前登录的是那个用户 -
su 用户名
切换用户 -
shutdown –h now
关机 -
reboot
重启 -
clear
清除屏幕,实际上内容并没有清除,是移到最上面 -
Tab
可以自动补齐命令或者文件名 -
top
查看系统运行负载情况,Linux系统可以通过top命令查看系统的CPU、内存、运行时间、交换分区、执行的线程等信息。通过top命令可以有效的发现系统的缺陷出在哪里。是内存不够、CPU处理能力不够、IO读写过高。 详细介绍可以参考我另一篇博文
-
uptime
系统运行负载情况,这个相当于top第一行看到的信息
系统平均负载定义:在特定时间间隔内运行队列中的平均进程数。
如果一个进程满足以下条件则其就会位于运行队列中:
a、它没有在等待I/O操作的结果
b、它没有主动进入等待状态(也就是没有调用'wait')
c、没有被停止(例如:等待终止)一般来说,每个CPU内核当前活动进程数不大于3,则系统运行表现良好!当然这里说的是每个cpu内 核,也就是如果你的主机是四核cpu的话,那么只要uptime最后输出的一串字符数值小于12即表示系统负载不是很严重.当然如果达到20,那就表示当前系统负载非常严重,估计打开执行web脚本非常缓慢
-
free
显示内存的使用情况 (kb) -
free -m
显示内存的使用情况 (m) -
free -h
显示内存的使用情况 (G)
3.5 Linux下的定时任务
Linux crontab 命令详细使用,可参考我另一篇博文。
crontab -e
创建或者编辑crontab
crontab -l
查看crontab
crontab -r
删除crontab,注意,这个命令会删除所有的任务,一般不会使用
crontab使用举例
*/1 * * * * echo "hello world" >> /opt/crontab.log
>
重定向覆盖输出,比如 > abc.txt
>>
重定向输出追加,比如 >>abc.txt
|
这个竖线表示管道符号,用于把管道左边的输出作为右边的输入,如常见的ps -ef | grep tomcat
> a.log
清空日志
重定向这块,可以参考博文:https://blog.csdn.net/smilehappiness/article/details/105181739
3.6 用户管理
这里不做详细介绍,具体的可以参考链接:https://www.runoob.com/linux/linux-user-manage.html
我只列几个常用的命令:
-
用户操作
useradd
用户名 添加用户
userdel -r zhangsan
删除用户(userdel 常用的选项是 -r,它的作用是把用户的主目录一起删除)
passwd
修改用户密码,修改当前登录用户密码passwd
passwd zhangsan
修改指定用户zhangsan密码,这个只有root有该权限
id 用户名
可以获取用户的id等信息,如:uid=1001(用户名) gid=1002(test) groups=1002(test) -
用户组操作
cat /etc/passwd
查看系统中的所有用户
cat /etc/group
查看系统中的所有用户组
groupadd 组名
创建用户组
groupdel 组名
删除用户组
groups
查看当前用户所在组
groups 用户名
查看指定用户所在组
usermod -g 组名(A) 用户名(B)
给已有的用户增加工作组,将用户B加入组A(该命令用于修改用户的基本信息)或者使用命令:gpasswd -a 用户名 组名
gpasswd -d user group
将一个用户从某个组中删除,注意:需要保证 group 不是 user 的主组
3.7 文件权限
-
文件权限总结介绍
使用ll
命令,可以查看当前目录下,所有目录和文件的用户、组以及权限等信息
在Linux常见的文件类型有7种,如下图所示:
文件类型和权限
-rw-rw-rw-
表示文件
drw-rw-rwd
表示目录文件夹
srw-rw-rws
表示socket套接字文件
brw-rw-rwb
表示Block device块设备
crw-rw-rwc
表示Character Device字符设备文件的权限只有3种:r,读权限;w,写权限;x,执行权限。权限的值可以用数字表示分别为,r:4,w:2,x:1
r--read 表示读权限,对应的值为4
w--write 表示写权限,对应的值为2
x--execute 表示可执行权限,对应的值为1
rwx=7表示拥有所有的读、写、可执行权限
常见644、755、777三种权限 -
drwxr-xr-x
详细介绍:
第1个字母:代表文件类型
第2~4字母:代表用户的权限,这三个字母对应的为属主位,表示创建该文件者或被指定的文件所属者
第5~7字母:代表用户组的权限,这三个字母对应的为属组位,表示文件的所属组,在该组内的非属主用户对该文件拥有该属组权限
第8~10字母:代表其他的用户的权限,既不属于属主又不在属组的用户
>文件中rwx的具体含义:
r:可以使用类似cat等命令查看文件内容
w:可以编辑或删除此文件
x:可以在命令提示符下当做命令提交给内核运行
>目录中rwx的具体含义:
r:可以对此目录执行ls以列出内部的所有文件
w:可以在此目录创建文件
x:可以使用cd切换进此目录,也可以使用ls -l查看内部文件的详细信息
-
设置文件的读写执行权限
chmod 640 aa.txt
-R
递归,将设置的权限应用到目录以及目录下面的所有文件,如:chmod -R 755 /usr/local
-
修改文件所属用户
chown centos aa.txt
-R 递归修改文件及其下的子文件的所属用户
chown -R centos /usr/local
-
修改文件所属组
chgrp centos aa.txt
-R 递归修改文件及其下的子文件的所属组
chgrp -R centos /usr/localhost
-
一次性修改属主和属组
chown [OWNER]:[GROUP]] FILE
chown centos:centos aa.txt
chown -R centos:centos /usr/local
-
查看用户所在组
groups
3.8 文档处理
grep
对文本进行匹配,搜索,如:ps -ef | grep tomcat
sort
排序,如:cat aa.log | sort
uniq
去除相邻重复的行,如:cat aa.txt| sort | uniq
wc
依次输出 行数、单词数、字符数,如:cat aa.txt| wc
日志打印输出、日志内容查找
grep -A 100 'Exception' catalina.out
匹配关键词的后面100行 after
grep -B 100 'Exception' catalina.out
匹配关键词的前面100行 befer
grep -C 100 'Exception' catalina.out
匹配关键词的上下100行 center
或者
cat catalina.out | grep -C 100 'Exception'
cat catalina.out | grep -A 100 'Exception'
cat catalina.out | grep -B 100 'Exception'
tail -f catalina.out
实时查看日志文件
tail -100f catalina.out
实时查看日志文件末尾一百行
tail -f -n 100 catalina.out
实时查看日志末尾100行
3.9 网络通讯
curl
抓取网络文件内容,比如网页
wget
网络下载
yes、y
对linux命令执行后的接受、肯定、是、确认,如果不接受、不确认、否定 就输入 no 或者 n
ifconfig
查看系统IP
curl ipinfo.io/ip
或者curl ifconfig.me
查看外网ip
ping
测试某个地址是否可以连通
lsof -i 端口号
用于查看某一端口的占用情况,比如查看8000端口使用情况,lsof -i 8000
,如果不存在的话,安装:yum -y install lsof
netstat
查看所有网络端口,如:netstat -nlp
netstat -tunlp | grep 端口号
,用于查看指定的端口号的进程情况,如查看8000端口的情况,netstat -tunlp | grep 8000
netstat 相关参数说明:
-t (tcp) 仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化为数字
-l 仅列出在Listen(监听)的服务状态
-p 显示建立相关链接的程序名
3.10 备份压缩
-
tar 压缩与解压缩
解压
tar -zxvf xxx.tar.gz
tar -zxvf xxx.tar.gz -C /usr/local
(可以通过-C
执行把文件解压到哪里去)
tar -xvf xxx.tar
压缩:
tar -zcvf xxx.tar.gz ./file/*
tar -cvf xxx.tar ./file/*
-
zip 压缩与解压缩
zip a.zip a.txt
压缩为zip格式
unzip a.zip
解压zip格式的压缩包 -
Windows里面:rar zip
压缩文件类型:tar
tar.gz
tar.bz2
tar.xz
,他们依次压缩得越厉害,压缩速度当然就越来越慢
解压都可以使用:tar -xvf
压缩(记住他们是z j J):
-zcvf file.tar.gz filenameOrDir
这个压缩成tar.gz格式
-jcvf file.tar.gz filenameOrDir
压缩成tar.bz2格式
-Jcvf file.tar.gz filenameOrDir
压缩成tar.xz格式
3.11 Linux上rz和sz的使用
小文件同步到Linux服务器上,有时候不需要使用XFTP或者WinSCP等,可以使用rz和sz操作。
安装:yum -y install lrzsz
rz
上传文件
sz
下载文件
本文参考链接:菜鸟教程
写博客是为了记住自己容易忘记的东西,另外也是对自己工作的总结,希望尽自己的努力,做到更好,大家一起努力进步!
如果有什么问题,欢迎大家一起探讨,代码如有问题,欢迎各位大神指正!