Linux
文章目录
Linux的简介
Linux 是一种开源的类 Unix 操作系统。它的历史可以追溯到 20 世纪 60 年代。
Unix 操作系统:一个多用户、多任务的分时操作系统。
允许多个用户同时使用系统,并且可以同时运行多个任务。
分时操作系统的意思是:主机可以同时被多个终端控制,把cpu时间片分给各个终端使用,因为时间片很短,所以各个终端用户以为自己在独占主机。
Linux 有多种发行版本,如 CentOS、Debian、Ubuntu 等。它具有高安全性、高稳定性、易于维护、可在多种硬件上运行、免费开源、保密性好等优点,能很好地运行在多种硬件平台上,并且对硬件的要求很低,功能强大而且架构开放,因此被广泛应用于数据库、桌面应用、云计算、网络服务器、嵌入式系统等多个领域。
为什么不用Windows部署程序,而选择Linux?
- 它比Windows安全,只有root用户才能更改系统设置和配置。并且因为它是开源的,大量人员参与了开发,它的大部分漏洞都已被修复。
- 它很稳定,Windows在使用一段时间后会变慢,但linux不会。
- 完全免费,不用担心闭源的风险。
Linux文件系统
linux的文件系统是树状目录结构,最上面的一层是根目录“/”,在此目录下在创建其他目录。有一句很经典的话,在linux中,一切皆文件。
- /bin,放着最经常使用的命令。
- /sbin,s就是super user,放着系统管理员使用的系统管理程序
- /home,普通用户的主目录
- /root,系统管理员的主目录
- /lib,应用程序的运行要用的动态链接共享库。
- /etc,放配置文件
- /usr,存放系统自带的应用程序
- /opt,存放用户安装的第三方软件
- /var,存放经常被修改的目录,比如日志等
- /boot,存放启动linux所需要的一些核心文件
- /proc,系统内存的映射目录,可以访问这个目录来获取系统信息
- /srv,service的缩写,该目录存放一些服务启动之后需要提取的数据
- /sys,用于用户空间和内核之间的交互
- /dev,把所有的硬件用文件的形式存储
- /media,把识别到的设备挂载到这个目录下
- /mnt,让用户临时挂载别的文件系统,然后进入目录就可以查看里面的内容了
常用命令
查询IP:ip address
ifconfig命令是net-tools工具中的,需要安装。
退出登录:exit
清空屏幕:clear
关机(需要root权限):halt
重启(需要root权限):reboot
切换用户:su - 用户名
查看历史命令:history
查看操作系统的相关信息:cat /etc/os-release
查看系统内核:uname -r
对单个软件包的处理:rpm
对软件包集合及其依赖关系的处理:yum(基于rpm)
管理系统服务:systemctl
文本编辑器
三种模式:
一般模式【默认】:删除(dd:删除当前行,5dd删除5行)、复制(yy:复制当前行,5yy:复制五行)、粘贴§、查找(/关键字,回车查找,n下一个)、到最后一行和最首行(GG和gg),撤销(u)。
编辑模式:一般模式下按i进入,ESC进入一般模式。
命令模式:一般模式下按:进入,ESC进入一般模式。可以执行一些命令:
:wq(保存退出),:q(退出),:q!(强制退出),设置和取消行号(:set nu和:set nonu)。
用户管理
添加用户:useradd 用户名
指定密码:passwd 用户名
删除用户(会保留家目录):userdel 用户名
删除用户(不会保留家目录):userdel -r 用户名
查询用户信息:id 用户名
切换用户:su - 用户名
查看当前用户:who am i
新增组:groupadd 组名
删除组:groupdel 组名
增加用户并指定组:useradd -g 组名 用户名
修改用户的组:usermod -g 组名 用户名
用户和组相关文件:
用户的配置文件:/etc/passwd
密码的配置文件:/etc/shadow
组的配置文件:/etc/group
帮助指令
获取帮助信息:man 命令
获取shell内置命令的帮助信息:help 内置命令
文件目录指令
显示当前所在目录:pwd
列出当前目录下的文件:ls [options] [files]
切换到指定目录:cd [directory]
创建目录:mkdir [options] [directoryName]
创建多级目录:mkdir -p [directoryName]
删除目录:rmdir [options] [directoryName]
删除非空目录 rm -rf [directoryName]
创建文件:touch [fileName]
复制文件:cp [options] [source] [dest]
递归复制整个文件夹 :cp -r [source] [dest]
删除文件:rm [options] [dest]
-r:递归删除
-f:不提示
文件重命名:mv oldNameFile newNameFile
文件移动:mv source target
查看文件内容:
cat [-n] file
more file
less file【推荐】:空格向下翻页,/keyword查找关键词,n向下一个 ,N向上一个,q退出。
head file:查看文件的前10行内容(参数-n 5:查看前5行)
tail file:查看文件的后10行内容
输出内容到控制台(能输出环境变量):echo [options] [content]
输出内容到指定的文件:>(覆盖写入)、>>(追加写入)
eg:
ls -l > file :列表的内容覆盖写入文件中
cat file1 > file2 :文件1的内容覆盖写入到文件2
echo “abc” >> file :将abc追加到文件内容的末尾
创建一个软链接(Windows中的快捷方式):ln -s [原文件或目录] [软连接名]
日期时间
当前时间:date
日历:cal
搜索查找命令
查文件或目录:find [range] [options]
-name
-user
-size
查命令:which [name]
过滤查找:grep [options] 查找内容 源文件。
写法1:cat 1.txt | grep “yes”
写法2: grep “yes” 1.txt
|是管道符,表示将前一个命令的处理结果交给后面的命令处理。
解压缩
对*.gz进行解压缩:gzip/gunzip
对*.zip进行解压缩:zip/unzip
zip [-r:递归压缩] xxx.zip 将要压缩的内容
unzip [-d:存放目录] xxx.zip
打.tar.gz包:tar [options] xxx.tar.gz 打包的内容
-c:产生.tar打包文件
-v:显示详细信息
-f:指定压缩后的文件名
-z:打包同时压缩
-x:解包.tar文件
压缩多个文件:
tar -zcvf 1.tar.gz 1.txt 2.txt 3.txt
将1.tar.gz解压到当前目录:
tar -zxvf 1.tar.gz
将1.tar.gz解压到/jasmin/app目录
tar -zxvf 1.tar.gz -C /jasmin/app
组管理和权限管理
组管理
谁创建了文件,谁就是这个文件的所有者,文件的所在组默认是该用户的所在组。
查看文件的所有者:ls -ahl
修改文件的权限:chmod 权限 文件名
改变文件的所有者:chown 用户 文件名
修改文件的所在组:chgrp 组名 文件名
改变用户的组:usermod -g 组名 用户名
权限管理
ls -l会有下面结果:
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
0~9位说明:
第0位确定文件类型:l是链接(类似于windows的快捷方式),d是目录,c是字符设备文件(鼠标键盘),b是块设备(比如硬盘)
第1~3位所有者拥有该文件的权限,
第4~6位是所属组(同组的其他成员)拥有该文件的权限,
第7~9位是其他用户(非同组)拥有该文件的权限。
其他说明:
1 文件:硬连接数 。 目录:子目录数
root 用户
root 组
1213 文件大小(字节)
Feb 2 09:39 最后修改日期
abc 文件名
rwx权限详解:
rwx作用到文件:
r:读取查看
w:可写文件内容,但不代表可删,删除一个文件的前提是对这个文件所在的目录有可写权限。
x:可以执行该文件
rwx作用于目录:
r:可以读取,ls查看目录内容
w:可以修改,对目录中的文件进行创建、删除和重命名
x:可以进入该目录
修改权限
修改文件和目录的权限(两种方式):
u:所有者、g:所有组、o:其他人 、a:所有人(u、g、o总和)
第一种:通过±=
1):chmod u=rwx,g=rx,o=r 文件名
2):chmod u-x 文件名
3):chmod o+w 文件名
第二种:通过数字变更权限
r=4 w=2 x=1 rwx=4+2+1=7 rw=6 rx=5
eg:把abc.txt文件的权限修改为rwxr-xr-x,使用数字的方式实现。
chmod 755 abc.txt
修改文件的所有者:chown 所有者 文件
-R 如果是目录,则使其下面的所有子文件和子目录递归生效。
eg:将/home/test下的所有文件和目录的所有者都修改为tom
chown -R tom /home/test
修改文件的所在组:chgrp 所在组 文件
eg:将/home/test下的所有文件和目录的所在组都修改为shaoling
chgrp -R shaoling /home/test
修改文件的所有者和所在组:chown 所有者:所在组 文件
定时任务调度
crond定时调度
crontab [选项]
-e :编辑crontab定时任务
-l :查询crontab任务
-r :终止任务调度
重启任务调度:service crond restart
任务调度文件:/etc/crontab
设置个人任务调度:
-
执行crontab -e 命令
-
输入任务到调度文件
eg:*/1 * * * * ls -l /etc > /tmp/to.txt每小时的每分钟执行ls -l /etc > /tmp/to.txt这个命令。
参数细节说明:
at定时任务
at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行,所以在使用at命令时,一定要保证atd进程的启动。
检查atd进程是否启动:ps -ef | grep atd
设置定时任务:at [选项] [时间]
ctrl + D结束at命令的输入,输出两次
查看未执行的定时任务:atq
删除已经设置的任务:atrm 编号
是“End of transmission”表示传输结束的意思。
磁盘分区、挂载
查看系统整体磁盘的使用情况: df -h
查看指定目录的磁盘占用情况(默认为当前目录):du -h
参数:-h:带计量单位、-a:含文件、-c:列出明细的同时增加汇总值、–max-depth=1 子目录深度为1
工作实用指令(以/opt文件夹举例):
wc -l 文件:统计文件中的行数
- 统计文件个数:ls -l /opt | grep “^-” | wc -l
- 统计目录个数:ls -l /opt | grep “^d” | wc -l
- 统计文件个数,包括子文件夹里的:ls -lR | grep “^-” | wc -l
- 统计目录个数,包括子文件夹里的:ls -lR | grep “^d” | wc -l
- 以树状显示目录结构:tree 目录,(如果没有tree命令,使用yum install tree安装)
网络
查看网络配置:ifconfig
查看和目的主机的网络是否连通:ping 目的主机
主机名解析过程分析:
hosts文件:用来记录IP(10.15.131.08)和主机名(www.baidu.com)映射关系的文本文件。
DNS(域名系统):是互联网上记录域名和IP地址映射的一个分布式数据库。
eg:用户在浏览器输入了www.baidu.com
监控网络状态:netstat [选项]
-an:按一定顺序排列输出
-p:显示哪个进程在调用
eg:查看服务名为sshd的服务的网络使用信息
netstat -anp |grep sshd
进程管理
每个执行的程序都称为一个进程,每个进程都会分配一个ID号。
查看系统中正在执行的进程:ps 参数
-a :显示当前终端的所有进程信息
-u :以用户的格式显示进程信息
-x :显示后台进程运行的参数
以全格式显示当前所有的进程:ps -ef
-e:显示所有进程
-f:全格式
ps -ef | grep sshd
杀死进程:
kill [选项] 进程号
-9:强迫进程立即停止
killall 进程名称(支持通配符,这在系统因负载过大而变得很慢时很有用)
查看进程树:pstree [选项]
-p:显示进程的PID
-u:显示进程的所属用户
动态显示进程:top [选项]
-d 秒数:指定每隔几秒更新,默认是3秒
-i:不显示任何闲置或者僵死进程
-p:通过指定监控进程ID来仅仅监控某个进程的状态
交互:
P:以CPU使用率排序(默认)
M:以内存使用率排序
N:以PID排序
q:退出top
服务管理
service的本质就是运行在后台的进程,通常会监听某个端口,等待其他程序的请求,比如(mysqld,sshd,防火墙等)。
service管理指令:
service 服务名 [start|stop|restart|reload|status]
查看service指令管理的服务:ls -l /etc/init.d
CentOS7.0以后,很多服务是通过systemctl来管理的。
systemctl管理指令:
systemctl [start|stop|restart|status] 服务名
查看systemctl指令管理的服务:ls -l /usr/lib/systemd/system
systemctl设置服务的自启动状态:
查看服务的开启启动状态:systemctl list-unit-files [|grep 服务名]
设置开机启动:systemctl enable 服务名
关闭开机启动:systemctl disable 服务名
查询某个服务是否是自启动的:systemctl is-enabled 服务名
eg:
查看当前防火墙的状态:systemctl status firewalld
关闭防火墙:systemctl stop firewalld
开启防火墙:systemctl start firewalld
在真实生产环境中,防火墙打开后,外部请求的数据包就不能跟服务器监听端口通讯,这是需要防火墙打开指定的端口。
打开端口:firewall-cmd --permanent --add-port=端口号/协议
关闭端口:firewall-cmd --permanent --remove-port=端口号/协议
重新载入,才能生效:firewall-cmd --reload
查询端口是否开放:firewall-cmd --query-port=端口号/协议
RPM和YUM
rpm
查询安装的所有rpm软件包:rpm -qa
查询是否安装了某个软件:rpm -qa|grep 软件名
查询软件包信息:rpm -qi 软件包名
查询软件包中的文件: rpm -ql 软件包名
查询文件所属的软件包:npm -qf 文件全路径名
卸载rpm包:rpm -e 软件包名
安装rpm包:rpm -ivh RPM包全路径名称
参数说明:-i(install):安装、-v(verbose):提示、-h(hash):进度条
rpm包名的基本格式:firefox-60.2.2-1.el7.centos.x86_64
名称:firefox
版本号:60.2.2-1
适用操作系统:el7.centos.x86_64(CentOS7的64位)
如果是i686、i386表示的是32位系统、noarch表示通用。
yum
yum基于npm,能够管理软件包集合及其依赖关系。
查看yum服务器是否有需要安装的软件:yum list|grep 软件名
安装指定的yum包:yum install 软件名
协议
RPM和YUM
rpm
查询安装的所有rpm软件包:rpm -qa
查询是否安装了某个软件:rpm -qa|grep 软件名
查询软件包信息:rpm -qi 软件包名
查询软件包中的文件: rpm -ql 软件包名
查询文件所属的软件包:npm -qf 文件全路径名
卸载rpm包:rpm -e 软件包名
安装rpm包:rpm -ivh RPM包全路径名称
参数说明:-i(install):安装、-v(verbose):提示、-h(hash):进度条
rpm包名的基本格式:firefox-60.2.2-1.el7.centos.x86_64
名称:firefox
版本号:60.2.2-1
适用操作系统:el7.centos.x86_64(CentOS7的64位)
如果是i686、i386表示的是32位系统、noarch表示通用。
yum
yum基于npm,能够管理软件包集合及其依赖关系。
查看yum服务器是否有需要安装的软件:yum list|grep 软件名
安装指定的yum包:yum install 软件名
标签:文件,grep,查看,Linux,软件包,rpm,目录 From: https://blog.csdn.net/weixin_66331270/article/details/142668272