Linux系统指南
2021/5/24 7:27:26
本文主要是介绍Linux系统指南,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Linux从安装到卸载
---------------jiuanc---------------
在线手册:http://man.linuxde.net/
本节是基于CentOS进行学习
本书目录:
文章目录
- Linux从安装到卸载
- 一:Linux简介篇
- 1:Linux
- 2:Linux应用领域
- 3:学习阶段
- 二:Linux基础篇
- 1:Linux介绍
- 2:Linux和Unix的关系
- 3:Linux和Windows比较
- 4:VMware的安装
- 5:CentOS安装
- 6:终端使用和联网
- 7:vmtools的安装和使用
- 8:文件目录结构
- 三:Linux实操篇
- 1:下载使用远程登录XShell5
- 2:下载和使用远程上传和下载Xftp
- 3:vi和vim编辑器的使用
- 4:关机重启注销
- 四:实操篇-用户管理
- 1:创建、删除用户
- 2:查询用户信息
- 3:用户组
- 4:用户和组相关的文件
- 五:实操篇-实用指令
- 1:运行级别和找回root密码
- 1.1:指定运行级别
- 1.2:切换到指定运行级别
- 1.3:如何找回root密码
- 1.4:更改Linux其的运行级别
- 2:帮助指令man和help
- 2.1:man获得帮助信息
- 2.2:help获得shell内置命令的帮助信息
- 3:文件目录类pwd ls cd
- 3.1:pwd 显示当前工作目录的绝对路径
- 3.2:ls 查看当前目录的内容信息
- 3.3:cd 路径切换
- 4:文件目录类mkdir rmdir
- 4.1:mkdir 用于创建目录
- 4.2:rmdir 删除空目录
- 5:文件目录类 touch cp
- 5.1:touch 创建空文件
- 5.2:cp 拷贝文件到指定目录
- 6:文件目录类rm mv
- 6.1:rm 删除文件或者目录
- 6.2:mv 移动文件与目录或重命名
- 7:文件目录类cat more less
- 7.1:cat 查看文件内容,只读
- 7.2:more 以全屏幕的方式按页显示文本文件的内容
- 7.3:less 分屏查看,但功能比more强大
- 8:文件目录类 > (覆盖)和 >>(追加)
- 9:文件目录类 echo head tail
- 9.1:echo 输出内容到控制台
- 9.2:head显示文件的开头部分内容
- 9.3:tail输出文件尾部的内容
- 10:文件目录类 ln history
- 10.1:ln 给原文件创建一个软链接
- 10.2:history查看已经执行过的历史命令,也可以执行历史指令
- 11:时间日期类 date cal
- 11.1:date显示当前日期
- 11.2:date 设置日期
- 11.3:cal 查看日期
- 12:搜索查找类 find locate grep 管道符号|
- 12.1:find 搜索查找
- 12.2:locate 快速定位文件路径
- 12.3:grep 和管道符号|
- 13:压缩和解压缩指令
- 13.1:gzip和gunzip
- 13.2:zip压缩和unzip解压
- 13.3:tar 打包指令,最后打包后的文件是.tar.gz的文件
- 六:实操篇-组管理
- 1:组管理概念
- 2:文件目录所有者
- 2.1:查看文件的所有者
- 2.2:修改文件所有者
- 2.3:组的创建
- 2.4:查看文件/目录所在组
- 2.5:修改文件所在组
- 2.6:改变用户所在组
- 七:实操篇-权限管理
- 1:权限介绍
- 2:权限介绍
- 2.1:修改权限-chmod
- 2.2:修改文件所有者-chown
- 2.3:修改文件的所在组-chgrp
- 八:实操篇-任务调度
- 1:crontab任务调度
- 2:任务调度应用实例
- 3:conrtab相关指令
- 九:实操篇-磁盘分区、挂载
- 1:磁盘分区介绍
- 2:Linux分区
- 3:查看分区和挂载:lsblk -f
- 4:挂载的经典案例
- 5:磁盘查询实用指令
- 5.1:df -h 查询系统整体磁盘使用情况
- 5.2:du -h查询指定目录的磁盘占用情况
- 6:常用磁盘查询案例
- 十:实操篇-网络配置
- 1:NAT模式(网络环境)
- 2:查看网络IP和网关
- 2.1:查看虚拟网络编辑器
- 2.2:修改IP
- 2.3:查看网关
- 2.4:查看Windows环境的中VMnet8网络配置
- 2.5:通过Ping可测试主机之间网络连通性
- 3:Linux网络环境配置
- 3.1:自动获取IP
- 3.2:指定固定的IP地址
- 十一:实操篇-进程
- 1:进程基本介绍
- 1.1:ps -aux显示系统执行的进程
- 1.2:ps -ef查询所含父进程的
- 2:kill和killall终止进程
- 2.1:pstree查看进程树
- 3:service服务管理
- 3.1:关闭打开防火墙(iptables)
- 3.2:telnet测试端口是否在用
- 3.3:chkconfig设置查看服务自启动
- 3.4:查看服务名
- 3.5:例
- 4:监控服务
- 4.1:top动态监控
- 4.2:实例(存在语法)
- 4.3:动态监控的互动指令
- 4.4:netstat监控网络状态
- 十二:实操篇-RPM与YUM
- 1:RPM
- 2:rpm包的简单查询指令
- 3:rpm包的查询指令
- 4:rpm包的卸载安装
- 4.1:卸载
- 4.2:安装
- 5:Yum
- 5.1:查询yum服务器是否有需要安装的软件
- 5.2:安装指定的yum包
- 十三:JavaEE定制篇
- 1:JDK安装和配置
- 2:tomcat安装
- 3:MySQL安装
- 4:redis安装,所有安装均可采用
- 十四:大数据定制篇
- 1:简介
- 1.1:脚本格式要求
- 1.2:创建一个Shell脚本
- 2:变量
- 2.1:输出系统变量
- 2.2:set显示当前Shell中所有的变量
- 2.3:Shell变量的定义
- 2.4:变量定义规则
- 2.5:将命令返回值赋值给变量
- 3:环境变量
- 4:位置参数变量,$n $* $@ $#获取命令行的参数
- 5:预定义变量
- 6:运算符
- 7:条件判断
- 7.1:两个整数的比较
- 7.2:按照文件权限进行判断
- 7.3:按照文件类型进行判断
- 8:流程控制
- 8.1:if
- 8.2:case语句
- 8.3:for循环
- 8.4:while循环
- 9:read读取控制台输入
- 9:函数
- 9.1:函数简介
- 9.2:basename dirname系统函数
- 9.3:自定义函数
- 10:shell综合案例
- 十五:make
- 9:read读取控制台输入
- 9:函数
- 9.1:函数简介
- 9.2:basename dirname系统函数
- 9.3:自定义函数
- 10:shell综合案例
- 十五:make
一:Linux简介篇
1:Linux
Linux搭建JavaEE环境
- JDK 安装
- IDEA 或Eclipse安装
- Tomcat安装
- 数据库安装
Linux之大数据定制篇
- 概述
- Shell脚本执行方式
- Shell变量
- 运算符
- 条件判断
- 流程控制
- 函数
- 定时维护MySQL
Linux之Python定制篇
- Python专业开发平台-Ubuntu
- Ubuntu下开发Python开发环境
- APT软件管理和远程登录
2:Linux应用领域
- 个人桌面
- 服务器领域:最强的
- 嵌入式领域
3:学习阶段
本人介于软件开发,故而本篇只会接触少量内核
- 第一阶段:Linux环境下的基本操作命令,包括文件操作命令(rm mkdir chmod, chown) 编辑工具使用(vi vim) Linux用户管理(useradd userdel usermod)等
- 第二阶段:Linux的各种配置(环境变量配置,网络配置,服务配置)
- 第三阶段:Linux下如何搭建对应语言的开发环境(大数据,Java EE,Python等)
- 第四阶段:能编写shell脚本,对Linux服务器进行维护
- 第五阶段:能进行安全设置,防止攻击,保障服务器正常运行,能对系统调优
- 第六阶段:深入理解Linux系统(对内核有研究),熟练掌握大型网站应用架构组成、并熟悉各个环节的部署和维护方法
二:Linux基础篇
1:Linux介绍
免费、开源、安全、高效、稳定、处理高并发非常强悍的操作系统,现在很多的企业级的项目都部署到其上。
发行版本:CentOSE、Redhat、Ubuntu、Suse、红旗Linux
目前主要操作系统:
- Windows
- Android
- 车载系统
- Linux
2:Linux和Unix的关系
最早是Unix,开发厂商进行对其改装,但由于成本太高,大多数人用不起。故而,有了Linux(GNU计划的一个部分)
3:Linux和Windows比较
免费与收费、软件与支持、安全性、使用习惯、可执行性
Linux都好于Windows
应用场景:Windows:桌面
Linux:服务器
4:VMware的安装
学习Linux需要一个环境,需先创建一个虚拟机,然后在虚拟机上安装一个CentOS系统
1:去BIOS里修改设置开启虚拟化设备支持(开机时f2),将其设置为Enzble
进入BIOS后,找到Configuration选项,选择Intel Virtual Technolog并回车,将光标移至Enable,回车。f10保存并退出。
2:安装虚拟机软件
5:CentOS安装
网易镜像:http://mirrors.163.com/centos/6/isos/
一:创建虚拟机空间
1:创建创建,选择推荐(典型)的那个
2:选择稍后安装操作系统
3:选择Linux,选择CentOS 64位
4:起名,选择位置
5:分配内存空间(20G差不多了)
6:完成
7:编辑虚拟机设置
8:内存调成2G差不多
9:处理器根据电脑硬件设置数量,本机上的在任务管理器中显示
10:网络配置问题,
虚拟机的网络连接三种形式的说明:
- 桥连接:假如在教室这个网络下,有张三(Windows系统,192.168.0.20),也有李四(Windows系统,192.168.0.10)。那么,给张三装上一个Linux系统(192.168.0.30),选择桥连接,那么虚拟机就会和张三的本机的网段将会相同。也就是说,李四可以找到张三的Windows系统,同样也可以找到Linux系统。(最好自己根据这个画图理解)
优点:通讯方便
缺点:假如教室很多人都装了这个,那就会造成Ip地址冲突
-
NAT模式(网络地址转换方式):在前面基础上,有一个王五(Windows,192.168.0.40),他也装了个Linux系统(192.168.0.30)。选择NAT模式。那么,母机上就会出现两个IP地址(192.168.0.40和192.168.100.200)且Linux会变为(192.168.100.50),这两个点100就会形成一个网络环境,其余点0的是一个网络环境。也就是说,李四将不会找到王五的Linux系统,但王五的Linux系统可以找到李四(通过代理)。
优点:Linux可以访问外网,不会造成IP冲突。
-
仅主机模式:独立的IP,不和外网发生联系
二:开始安装系统(CentOS)
1:点最上方:虚拟机-设置
2:点:CD/DVD,选择使用ISO映像文件,并将其挂上,确定
3:开启此虚拟机.选SkIP(光标进入其界面后,按Tab键即可)。一路next。选择中文简体。选择美式英语。选择基本存储系统。选择:是,忽略所有数据。取一个主机名(如:Hadoop)。设置时区,默认上海。设置密码(如:123456,在实际开发中设置强度很高的密码,可用密码生成器)。
选择创建自定义布局:
- 创建–标准分区–挂载点选择:/boot(Linux启动会有引导文件,就在这)–大小200
- 点空闲–创建–标准分区–挂载点无,文件类型选择swap(当系统内存不够时,使用其,进行替代)–大小2048
- 点空闲–创建–标准分区–挂载点:/–选择使用全部空间
下一步–格式化–下一步–选择现在自定义(基本系统:留下兼容程序库和基本。桌面都保留)–下一步–重新引导–前进–同意–前进–创建用户(可以不用,因为已经有了root用户,注:root用户权限很高,不建议使用)–一路前进–kdump(当系统意外崩溃的时候,保留下点东西,用于分析)–点是
点其他–输入用户名,密码–完成!
6:终端使用和联网
在其页面,右键–使用终端打开----即可使用
配置网络:右上角的那个两个电脑图标–System eth0
7:vmtools的安装和使用
作用:可以直接粘贴命令在Windows和CentOS系统之间。可以设置Windows和CentOS的共享文件夹。
1:进入centOS
2:点击VM中的虚拟机----安装VMware Tools
3:centOS会出现一个vm的安装包 (将其移动到文件系统的opt中)
4:点击右键解压,得到一个安装文件
5:进入该Vm解压的目录,该文件在/root/桌面/vmware-tools-distrib/下
6:安装./vmware-install.pl(也可使用命令进行安装)
7:全部使用默认设置即可
8:需要reboot(在终端输入的指令)重新启动即可生效
设置共享文件夹:
注:一般开发都是用远程
在Windows下,设置个文件夹,作为共享的
在CentOS中,虚拟机–选项–共享文件夹–总是启用–然后选中刚才的那个文件夹–注:只读如果标上就修改不了–确定
在CentOS中,文件系统–mnt–hgfs–即找到
即成功!
8:文件目录结构
只有一个根目录,其余全在这里面(类似一个树)
Linux:一切皆文件
- /bin:这个目录存放着经常使用的命令
- /sbin:存放着系统管理员使用的系统管理程序
- /home:存放普通用户的主目录
- /root:该目录为系统管理员的用户主目录
- /lib:系统开机所需要最基本的动态连接共享库。几乎所有的应用程序都需要使用到这些共享库。
- /lost+found:该目录一般为空,当遭遇非法关机后,这里就存放了一些文件
- /etc:所有的系统管理所需要的配置文件和子目录,my.conf
- /usr:用户的很多应用程序和文件都存放在这个目录下
- /boot:存放的是启动Linux时使用的一些核心文件,包括一些链接文件和镜像文件
- /proc:(内核相关)虚拟的目录,他是系统内存的映射,访问这个目录来获取系统信息。
- /srv:(内核相关)存放一些服务启动之后需要提取的数据
- /sys:(内核相关)这是Linux2.6内核的一个变化。新出现的文件系统
- /tmp:存放一些临时文件
- dev:把所有的硬件用文件的形式存储
- media:Linux会自动识别一些设备,例如u盘、光驱,识别后,Linux会把识别的设备挂载到这个目录下
- mnt:时为了让用户临时挂载别的文件系统的,可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里面的内容了
- /opt:这是给主机额外安装软件所摆放的目录。如安装ORACLE数据库就是放在这个目录下。
- /usr/local:这是另一个给主机额外安装软件所安装的目录。一般是通过编译源码方式安装的程序。
- /var:存放着不断扩充的东西,习惯将经常被修改的目录放在这个目录下。包括各种日志文件。
- /selinux:这是一种安全子系统,他能控制程序只能访问特定文件。当黑客入侵后,就会触发,管理员可以看哪里出了问题。
故:1:Linux只有一个根目录
2:Linux的各个目录存放的内容是规划好的,不用乱放文件
3:Linux是以文件的形式管理我们的设备,因此Linux系统,一切皆为文件
三:Linux实操篇
1:下载使用远程登录XShell5
- 为什么需要远程登录Linux?
sshd:远程用户
1:开发时,Linux服务器是开发小组共享的
2:正式上线的项目是运行在公网的
3:因此程序员需要远程登录到CentOS进行项目管理或者开发
4:远程登录客户端有Xshell(远程登录且操作)、Xftp(远程上传和下载)
- Xshell
1:是目前最好的远程登录到Linux操作系统的软件,速度快,无乱码问题
2:是一个强大的安全终端模拟软件,支持SSH1,SSH2,Microsoft Windows平台的TELNET协议
3:可在Windows界面下用来访问远端不同系统下的服务器
- 安装Xshell5
1:注:需要Linux开启一个sshd服务(该服务会监听22端口)(在终端setup----系统服务—标了#就是打开的)
2:傻瓜式安装
3:打开–左上角第二行–打开(新建一个会话)–名称(Linux的ip地址,ip地址查询:在终端ifconfig)–协议是SSH–主机(和上面IP一样)–端口号(22)–完成
连接下他–接受并保存–输入Linux的用户名和密码----出现[root@hadoop ~]# 即成功
接下来,就可操作
2:下载和使用远程上传和下载Xftp
假如那个电脑没mysql,你需要将mysql传上去,就需要到这个了。
是一个基于Windows平台的功能强大的SFTP、FTP文件传输软件。使用了Sftp以后,Windows用户能安全地在UNIX、Linux和Windows PC之间传输文件。
- Fxtp安装配置以及使用
1:傻瓜式安装
2:新建一个会话–名称(可以随意,也可Linux的ip地址,ip地址查询:在终端ifconfig)–主机(和上面IP一样)–协议是SFTP(另一个21号端口未开)–端口号(22)–用户–完成
连接–输入密码–当然,因为是root用户,故而对应的是root文件–想要传输,右键传输就行
解决乱码:点击左边那个图标的下面有一个小齿轮的,选择UTF-8
3:vi和vim编辑器的使用
- 基本介绍
所有的Linux系统都会内建vi文本编辑器
vim具有程序编程的能力,可以看作vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计,代码补完、编译及错误跳转等方便编程的功能特别丰富
- vi和vim常用的三种模式
正常模式:打开一个文档就可进入了,在这可使用快捷键
插入/编辑模式:在这模式下,程序员可以输入内容。按下i,I,o,O,a,A,r,R都可进入这个模式
命令行模式:在这个模式中,可以提供你相关指令,完成读取、存盘、替换、离开vim、显示行号等的动作是在此模式中完成的。
- 入门案例
使用vim开发一个Hello.java程序,保存
在XShell连接后,先输入:ll(显示当前目录:所有文件)----再输入:vim Hello.java(创建了文件,打开了正常模式)----输入:i(打开编辑模式)----输入一个hello word的代码----在插入模式写完后,就需要回到一般模式(输入ESC)----输入::(接下来就可输入命令)wq(保存)----成功—查询:vim Hello.java----输入::(到命令行模式)q(退出)
- vi和vim的相互转换
模式的相互转换,在前提到,在命令行下输入:vim xxx,进入一般模式。输入:i,进入编辑模式。输入ESC,回到一般模式。在一般模式,输入::或者/,即可到命令模式。命令模式到一般模式还是输入ESC。
命令行的一些::wq(保存退出),:q(退出),:q!(修改后不保存,强制退出)
- vi和vim常用快捷键
1:在一般模式,拷贝当前行:yy(鼠标光标所在位置),拷贝当前行向下的5行:5yy,并粘贴(p)
2:在一般模式,删除当前行:dd,删除当前行向下的5行:5dd
3:在文件中查找某个单词:/关键字,回车,即可出来,输入n就是查找下一个。如查找hello,那就再一般模式输入:/hello,即可成功。/代表进入命令行
4:设置文件的行号,取消文件的行号::set nu和:set nonu
5:编辑/etc/profile文件(vim /etc/profile),使用快捷键到底文档的最末行:G和最首行:gg。(这是在正常模式下执行)
6:在一个文件中输入:hello,然后又想撤销,就在正常模式下输入: u
7:编辑/etc/profile文件,并将光标移动到20行 :shift+g
步骤:显示行号::set nu----输入20这个数字----输入shift+g
其余百度即可!
4:关机重启注销
- 关机重启指令
shutdown
shutdown -h now:立即关机
shutdown -h 1:一分钟后关机
shutdown -r now:立即重启
halt:关机
reboot:重启系统
syn:把内存的数据同步到磁盘,建议每次结束后都使用一次
- 用户登录
尽量少使用root登录,可用普通用户登录,再用:su-用户名。来切换成系统管理员身份
- 用户注销
在提示符下输入logout(远程登录时有效)即可退出连接Linux,即不再占有其
四:实操篇-用户管理
1:创建、删除用户
组的概念:比如root用户就可在root组,建一个xm用户,可将其放在组1,也可放在组2…
家目录的概念:根目录下有一个:/home/,在这下面就有各个创建的用户对应的家的目录,当用户登录时,会自动进入到自己的家目录。 例如:/home/xm(xm的家目录)
Linux系统是一个多用户任务的操作系统,任何一个要使用系统资源的人,都需要向管理员申请一个账号。
- 添加用户
useradd [可选] 用户名
useradd -g 指定目录 用户名
注:如果没有指定组,那么其默认会创建一个和用户名字一样的组,并将用户存在其中
例如:创建一个用户useradd xm,也会自己创建一个组,也有了家目录
- 设置用户密码
passwd 用户----然后输入设置的密码即可
- 删除用户
userdel 用户名
删除用户xm,但要保存家目录:userdel xm
删除用户xm,且不保存家目录:userdel -r xm
2:查询用户信息
- 查询
id 用户名
- 切换用户
当用户权限不足时,可以通过su-来切换到高权限用户。注:权限高的用户切换到权限低的用户,不需要密码,反之需要
su - 切换用户名
- 当需要返回原来的用户时
exit
例:切换到zf:su - zf
返回到原来的:exit
- 查看当前用户
whoami或者who am i
3:用户组
类似于角色,系统可以对有共性的多个用户进行统一的管理
- 增加组
groupadd 组名
例:groupadd dw(创建dw组)
- 删除组
groupdel 组名
例:groupdel dw(删除dw组)
- 创建一个用户,给其指定一个组(接着创建用户那块)
创建一个用户zwj,给其指定一个组wd
先创建一个组:groupadd wd----再创建:useradd -g wd zwj
- 修改用户组
usermod -g 用户组 用户名
例:将zwj又换到sl组
接着上一个----先创建一个组:groupadd sl----再进行改组:usermod -g sl zwj
4:用户和组相关的文件
- /etc/passwd文件
用户的配置文件,用于记录用户的各种配置信息
vim /etc/passwd执行后,每行的含义(当然值得是用户,就类似于前面所创建的zwj,他的信息):用户名;密码(口令);用户id(用户标识符);组id(组标识符);注释性描述;主目录(家目录);shell
- /etc/shadow文件
口令配置文件(用户的密码就是存在这,这是加密文件)
vim /etc/shadow执行后,每行的含义(当然,这都是加密的。根本看不出来):登录名;加密口令;最后一次修改时间;最小时间间隔;最大时间间隔;警告时间;不活动时间;失效时间;标志
- /etc/group文件
组的配置文件,记录Linux包含的组的信息
每行的含义:组名;口令(密码);组标识符;组内用户列表(看不到)
五:实操篇-实用指令
1:运行级别和找回root密码
1.1:指定运行级别
系统的运行级别配置文件:/etc/inittab
0:关机
1:单用户(找回丢失密码)
2:多用户无网络服务
3:多用户有网络服务
4:保留
5:图形界面
6:重启(设置为这,则其就会一直处于重启状态)
1.2:切换到指定运行级别
init 运行级别
例:切换5–>3,然后关机
init 3----init 0
1.3:如何找回root密码
思路:进入到单用户模式(不需要密码),然后修改root密码
在开机页面按Enter----输入:e----把光标高亮到第二行(编辑内核)----在输入一个:e----空格+1(进入到单用户模式)----Enter----输入:b(进入到root)----使用:passwd root修改密码
1.4:更改Linux其的运行级别
vim /etc/inittab----id:所要改的级别:initdefault:
2:帮助指令man和help
当我们对某个指令不熟悉时,我们可以使用Linux提供的帮助指令来了解这个指令的使用方法
2.1:man获得帮助信息
man 命令或配置文件
例:查看ls命令的帮助信息
man ls
2.2:help获得shell内置命令的帮助信息
help 命令
例:查看cd命令的帮助信息
help cd
3:文件目录类pwd ls cd
3.1:pwd 显示当前工作目录的绝对路径
语法:pwd
例:显示当前工作目录的绝对路径
pwd
3.2:ls 查看当前目录的内容信息
语法:ls 选项
常用的选项:-a:显示当前目录所有的文件和目录,包括隐藏的
-l:以列表的方式显示信息
例:查看当前目录的所有内容信息,以列表形式
ls -al
3.3:cd 路径切换
语法:cd 参数
常用参数(cd后面跟着的):cd ~或者cd :回到自己家目录
cd (空格) …:回到当前目录的上一级目录
例:使用绝对路径切换到root目录
cd /root
使用相对路径到/root目录
注:这个是根据当前目录写 假如在/usr/lib
cd …/…/root
表示回到当前目录的上一级目录
cd …
回到家目录
cd或者cd ~
4:文件目录类mkdir rmdir
4.1:mkdir 用于创建目录
语法:mkdir 选项 要创建的目录
选项:-p:创建多级目录
例:创建一个目录:/home/dog
mkdir /home/dog
创建多级目录:/home/animal/tiger
mkdir -p /home/animal/tiger
4.2:rmdir 删除空目录
非空用:rm -rf
语法:rmdir 选项 要删除的空目录
例:删除一个空目录/home/dog
rmdir /home/dog
5:文件目录类 touch cp
5.1:touch 创建空文件
语法:touch 文件名称
例:创建一个空文件hello.txt
touch hello.txt
例:创建多个
touch h.txt u.txt
5.2:cp 拷贝文件到指定目录
语法:cp 选项 source dest
选项:-r:递归复制整个文件夹
例:将/home/aaa.txt文件拷贝到/home/bbb目录下
cd /home ----cp aaa.txt bbb/
递归复制整个文件夹,将/home/test 下面的所有拷贝到/home/zwj
cd /home----cp -r test/ zwj/
注:当目标目录下有相同文件,会提示你是否覆盖。用:\cp -r test/ zwj/就不会提示,直接进行覆盖!
6:文件目录类rm mv
6.1:rm 删除文件或者目录
语法:rm 选项 要删除的文件或者目录
选项:-r:递归删除整个文件夹
-f:强制删除而不提示
例:将/home/aaa.txt删除
cd /home----rm aaa.txt
例:强制递归删除整个文件夹/home/bbb
cd /home----rm -rf bbb/
6.2:mv 移动文件与目录或重命名
语法:mv 旧文件名 新文件名(功能描述:重命名)
语法:mv /temp/movefile/targetFolder(功能描述:移动文件)
例:将/home/aaa.txt 文件 重新命名为pig.txt
cd /home----mv aaa.txt pig.txt
例:将/home/pig.txt文件移动到/root目录下
cd /home----mv pig.txt /root/
7:文件目录类cat more less
7.1:cat 查看文件内容,只读
语法:cat 选项 要查看的文件
选项:-n:显示行号
例:/etc/profile文件内容,并显示行号
cat /etc/profile
注:cat一般带着一个:| more显示,可以分页
例 : cat /etc/profile | more
7.2:more 以全屏幕的方式按页显示文本文件的内容
注:其指令有若干的快捷键
语法:more 要查看的文件
快捷:空白键:翻向下一页
Enter:向下翻一行
q:立即离开more,不再显示该文件内容
Ctrl+F:向下滚动一屏
Ctrl+B:返回上一屏
=:输出当前的行号
:f:输出文件名和当前的行号
例:采用more查看文件/etc/profile
more /etc/profile
7.3:less 分屏查看,但功能比more强大
支持各种终端显示。less是根据显示需要来加载内容,效率高
语法:less 要查看的文件
快捷:空白键:向下翻动一页
[pagedown]:向下翻动一页
[pageup]:向上翻动一页
/字串:向下搜寻[字串]的功能:n:向下查找,N:向上查找
?字串:向下搜寻[字串]的功能:n:向上查找,N:向下查找
q:离开这个less程序
例:采用less查看一个文件/opt/金庸.txt
cd /opt----less 金庸.txt
8:文件目录类 > (覆盖)和 >>(追加)
覆盖:覆盖掉原先的内容
追加:是把文件追加到一个文件的尾部
1:语法:ls -l > 文件 (列表的内容写入文件中(覆盖写))
例:ls -l > add.txt(把ls -l查询到的列表写入到add.txt,如果不存在就创建,有则直接覆盖)
2:语法:ls -l >> 文件 (列表的内容追加到文件的末尾)
例:ls -l >> b.txt
3:语法:cat 文件1 > 文件2 (将文件一的内容覆盖到文件2)
4:语法:echo “内容” >> 文件 (将这个内容写入到文件,如果是>就是覆盖)
例:将/home目录下的文件列表写入到/home/info.txt中
ls -l /home/ > /home/info.txt
将当前日历信息追加到/home/mycal文件中【cal:显示当前日历】
cal >> /home/mycal
9:文件目录类 echo head tail
9.1:echo 输出内容到控制台
语法:echo 选项 输出内容
例:使用echo指令输出环境变量
echo $PATH
使用echo指令输出hello,world
echo “hello,world”
9.2:head显示文件的开头部分内容
语法:head 文件 (默认前10行)
head -n 5 文件 (查看前5行,5可以是任意行数)
例:查看/etc/profile的前5行内容
cd /etc----head -n 5 /profile
也可head -n 5 /etc/profile
9.3:tail输出文件尾部的内容
语法:tail 文件 (默认10行)
tail -n 5 文件 (查看后5行,5可以是任意数字)
tail -f 文件 (实时追踪该文档的所有更新)
例:查看/etc/profile最后5行代码
tail -n 5 /etc/profile
实时监控mydate.txt,看看到文件有变化时,是否看到,实时的追加日期
tail -f mydate.txt
10:文件目录类 ln history
10.1:ln 给原文件创建一个软链接
软链接也叫符号链接,类似于Windows里的快捷方式,存放了链接其他文件的路径
语法:ln -s 原目录 软链接明
例:在/home目录下创建一个软链接linkToRoot,连接到/root目录
cd /home ----ln -s /root linkToRoot
删除软链接linkToRoot
rm -rf linkToRoot
注:删除软链接不用带/
10.2:history查看已经执行过的历史命令,也可以执行历史指令
语法:history
例:1:显示所有的历史命令
history
2:显示最近使用过的10十个指令
history 10
3:执行历史编号为5的指令
查询之后----!5即可执行
11:时间日期类 date cal
11.1:date显示当前日期
语法:date 显示当前时间
date +%Y 显示当前年份
date +%m 显示当前月份
date +%d 显示当前哪一天
date “+%Y-%m-%d %H:%M:%S” 显示年月日时分秒
11.2:date 设置日期
语法:date -s (字符串时间)
例:设置当前系统时间,设置为:2020-11-11 11:22:22
date -s “2020-11-11 11:22:22”
11.3:cal 查看日期
语法:cal 选项 (不加选项,显示本月日历)
例:显示当前日历
cal
显示2020年日历
cal 2020
12:搜索查找类 find locate grep 管道符号|
12.1:find 搜索查找
将从指令目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端
语法:find 搜索范围 选项 文件名
选项:-name :按照指定的文件名查找模式查找文件
-user :查找属于指定用户名所有文件
-size :按照指定的文件大小查找文件
例:1:按文件名:根据名称查找/home目录下的hello.txt文件
find /home -name hello.txt
2:按拥有者:查找/opt目录下,用户名称为nobody的文件
find /opt -user nobody
3:查找整个linux系统下大于20m的文件(+n大于 -n小于 n等于)
find / -size +20M
小于20m:find / -size -20M
等于20m:find / -size 20M
4:查找/下所有的.txt文件
find / -name *.txt
12.2:locate 快速定位文件路径
利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。locate指令无需遍历整个文件系统,查询速度较快。但为了保证查询的准确性,管理员必须定期更新locate时刻
语法:locate 搜索文件
注:由于其是基于数据库查询,所以第一次运行前,必须使用updatedb指令创建locate数据库
例:请使用locate指令快速定位hello.txt文件所在目录
updatedb----locate hello.txt
12.3:grep 和管道符号|
管道符号| :表示将前一个命令的处理结果输出传递给后面的命令处理
grep:过滤查找
管道符 | :表示将前一个命令的处理结果输出传递给后面的命令处理
语法:grep 选项 查找内容
选项:-n:显示匹配行及行号
-i: 忽略字母大小写
例:请在hello.txt文件中,查找"yes"所在行,并显示行号
cat hello.java | grep -n yes
13:压缩和解压缩指令
13.1:gzip和gunzip
语法:gzip 文件 (将文件压缩为*.gz文件)
gunzip 文件.gz
例:1:gzip压缩,将/home下的hello.txt文件进行压缩
cd /home ----gzip hello.txt
2:gunzip解压缩,将/home下的hello.txt.gz文件进行解压缩
cd /home----gunzip hello.txt.gz
13.2:zip压缩和unzip解压
语法:zip 选项 XXX.zip 将要压缩的内容
unzip 选项 XXX.zip
zip选项:-r:递归压缩,即压缩目录
unzip选项:-d<目录>:指定解压后文件的存放目录
例:将/home下的所有文件进行压缩成mypackage.zip
zip -r mypackage.zip /home
将mypackage.zip解压到/opt/tmp目录下
unzip -d /opt/tmp mypackage.zip
13.3:tar 打包指令,最后打包后的文件是.tar.gz的文件
语法:tar 选项 XXX.tar.gz 打包的内容
选项:-c:产生.tar打包的文件
-v:显示详细信息
-f:指定压缩后的文件名
-z:打包同时压缩
-x:解压.tar文件
例:1:压缩多个文件,将/home/a1.txt和/home/a2.txt压缩成a.tar.gz
cd /home----tar -zcvf a.tar.gz a1.txt a2.txt
2:将/home的文件夹压缩成myhome.tar.gz
tar -zcvf myhome.tar.gz /home
3:将a.tar.gz解压到当前目录
tar -zxvf a.tar.gz
4:将myhome.tar.gz解压到/opt/tmp2目录下
tar -zxvf myhome.tar.gz -C /opt/tmp2
注:要有-C
六:实操篇-组管理
1:组管理概念
在Linux的每个用户必须属于一个组,不能独立于组外。在Linux中每个文件有所有者、所在组、其他组的概念
1:所有组
2:所在组
3:其他组
4:改变用户所在的组
2:文件目录所有者
一般来说为文件的创建者,即为所有者
2.1:查看文件的所有者
语法:ls -ahl
例:创建一个组police,在创建一个用户tom,将tom放在police组,然后使用tom来创建一个文件ok.txt,查看情况
groupadd police----useradd -g police tom----指定密码,登录tom----touch ok.txt----ls -ahl即可查看文件所有者
2.2:修改文件所有者
语法:chown 用户名 文件名
例:使用root创建一个文件apple.txt,然后将其所有者修改成tom
touch apple.txt----chown tom apple.txt
2.3:组的创建
这玩意前面有
2.4:查看文件/目录所在组
语法:ls -ahl
2.5:修改文件所在组
语法:chgrp 组名 文件名
例:使用root用户创建文件orange.txt,看看当前文件属于哪个组,然后将这个文件所在组修改到police组
touch orange.txt----ls -ahl----chgrp police orange.txt
其他组:
除文件的所有组的用户外,系统的其他用户都是文件的其他组
2.6:改变用户所在组
语法:usermod -g 组名 用户名
语法:usermod -d 目录名 用户名 改变该用户登录的初始目录
例:创建一个bandit组,将tom这个用户从原来的police组,修改到这
groupadd bandit----usermod -g bandit tom
七:实操篇-权限管理
1:权限介绍
基于文件和目录的权限
首先创建一个用户:tom(useradd tom),在此用户下创建一个组:police(groupadd police),在此目录下创建一个文件:ok.txt(touch ok.txt),后查询此(ls -l):- rw - r - - r - - . 1 tom police 6 3月 18 19:24 ok.txt
对其解释:
第一个符号:他是代表这是什么东西
-:普通文件
d:目录
l:软链接
c:字符设备( 鼠标、键盘)
b:块文件(硬盘)
三个一组,"rw -"这是一组:表示文件所有者权限
r:读的权限
w:写的权限(文件:写的权限不代表他可删除,当对于文件的目录有写权限,才可删除)
-:没有权限
x:代表可执行(文件),可进入目录(目录)
"r - -"是一组:文件所在组的用户拥有的权限
此为:只有读的权限
"r - -"是一组:文件其他组用户拥有的权限
那个"1"所处的位置:如果最后是文件,则其代表他的硬链接的数
如果是目录,则代表其子目录个数
tom:文件所有者
police:文件所在组
"6"所处的位置:代表文件的大小(6个字节)
如果是后面是目录,其为:4096
“3月 18 19:24”:代表问价最后的修改时间
2:权限介绍
2.1:修改权限-chmod
通过chmod指令,可以修改文件或者目录的权限
- 第一种方式:+、-、=变更权限
u:所有者 g:所有组 o:其他人 a:所有人(u、g、o的总和)
语法:1:chmod u=rwx,g=rx,o=x 文件目录名
语法:2:chmod 0+w 文件目录名 (代表给其他人增家一个写的权限)
语法:3:chmod a-x 文件目录名 (代表给所有人减少一个可 执行/进入 的权限)
例:1:给abc文件的所有者读写执行的权限,给所在组读执行权限,给其他组读执行权限
chmod u=rwx,g=rx,o=rw zbc
2:给abc文件的所有者除去执行的权限,增加组写的权限
chmod u-x,g+w abc
3:给abc文件的所有用户添加读的权限
chmod a+w abc
- 通过数字变更权限
规则:r=4 w=2 x=1 rwx=7
chmod u=rwx,g=rx,o=x 文件目录名
相当于:chmod 751 文件目录名
例:将/home/abc.txt文件的权限修改成rwxr-xr-x,使用数字的方式实现
chmod 755 /home/abc.txt
2.2:修改文件所有者-chown
前面依然有,在6.2.2,此为深入
语法:chown 用户名 文件名 (改变文件的所有者)
语法:chown 用户名:所有组 文件名 (改变文件的所有者和所有组)
-R:如果是目录,加上这个就是修改旗下所有的
例:1:将/home/abc.txt问价的所有者修改成tom
chown tom /home/abc.txt
2:将/home/kkk目录下所有文件和目录的所有者都修改成tom
chown -R tom /home/kkk
2.3:修改文件的所在组-chgrp
语法:chgrp 所在组 文件
例:将/home/abc.txt文件的所有组修改成shaolin
chgrp shaolin /home/abc.txt
将/home/kkk目录下所有文件和目录的所在组都修改成shaolin
chgrp -R shaolin /home/kkk
八:实操篇-任务调度
1:crontab任务调度
注:简单了(就如下面的那个)就不用写脚本,复杂了就需要写shell脚本
任务调度:是指系统在某个时间执行的特定的命令或程序
任务调度分类:1:系统工作:有些重要的工作必须周而复始的执行。如:病毒扫描
2:个别用户工作:个别用户可能希望执行某些程序,比如对mysql数据库的备份
语法:crontab 选项
选项:-e:编辑crontab定时任务
-l:查询crontab任务
-r:删除当前用户所有的crontab任务
例:设置任务调度文件:/etc/crontzb
设置个人任务调度。执行crontab -e命令
接着输入任务到调度文件,如:*/1 * * * * ls -l /etc/>/tmp/to.txt
意思说每小时的每分钟执行ls -l/etc/>/tmp/to.txt命令
细节说明:
第一个"*":一小时当中的第几分钟 0-59
第二个"*":一天当中的第几小时 0-23
第三个"*":一月当中的第几天 1-31
第四个"*":一年当中的第几月 1-12
第五个"*":一周当中的星期几 0-7(0\7都为周日)
特殊符号说明:
*:代表任何时间
,:代表不连续的时间 如:“0 8,12 * * *”,就代表8点0分,12带你0分
-:代表连续的时间范围
*/n:代表每隔多久执行一次
2:任务调度应用实例
例:1:每隔一分钟,就将当前的日期信息,追加到/tmp/mydate文件中
写一个shell脚本/home/mytask1.sh:date>>/tmp/mydate----给mytask1.sh一个可执行权限----crontab -e----*/1 * * * * /home/mytask1.sh
具体步骤:在/home下:vim mytask1.sh ,输入date >> /tmp/mydate
给其权限:chmod 744 /home/mytask1.sh
crontab -e ,输入:*/1 * * * * /home/mytask1.sh
2:每隔一分钟,将当前日期和日历都追加到/home/mycal文件中
具体步骤:在/home下:vim mytask2.sh ,输入date >> /tmp/mycal和cal >> /tmp/mycal
给其权限:chmod 744 /home/mytask2.sh
crontab -e ,输入:*/1 * * * * /home/mytask2.sh
3:每天凌晨2:00将mysql数据库testdb,备份到文件mydb.bak
具体步骤:在/home下:vim mytask3.sh,输入:/usr/local/mysql/bin//mysqldump -u root -proot testdb > /tmp/mydb.bak
给其权限:chmod 744 /home/mytask3.sh
crontab -e ,输入:0 2 * * * /home/mytask2.sh
3:conrtab相关指令
1:conrtab -r :终止任务调度
2:conrtab -l:列出当前有哪些任务调度
3:service crond restart 重启任务调度
九:实操篇-磁盘分区、挂载
1:磁盘分区介绍
- mbr分区
1:最多支持四个主分区
2:系统只能安装在主分区
3:扩展分区要占一个主分区
4:mrb最大只支持2TB,但拥有最好的兼容性
- gtp分区:
1:支持无限多个 主分区(但操作系统可能限制,比如windows下最多128个分区)
2:最大支持18EB的大容量(EB=1024PB,PB=1024TB)
3:Windows7 64位以后支持gtp
2:Linux分区
无论有几个分区,归根结底只有一个根目录
硬盘下的分区----挂载----Linux中的文件
查看分区和挂载:lsblk -f
- 硬盘
Linux硬盘分为IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘
对于IDE硬盘,驱动器表示符号为“hdx”,其中“hd”表面分区所在设备的类型,这里是指IDE硬盘了。“x”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),“”代表分区,前四个分区用数字1到4表示,他们是主分区或扩展分区,从5开始就是逻辑分区。例:hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分区。
对于SCSI硬盘则标识为“sdx~”,SCSI硬盘是用“sd”来表示分区所在设备的类型的,其余则和IDE硬盘的表示方法一样
3:查看分区和挂载:lsblk -f
如果想看大小:lsblk
如:|-sdal ext4 b3ece1-f1-9547-4352-b6f5-a36486d09853 /boot
|-sdal:分区情况
ext4:分区类型
b3ece1-f1-9547-4352-b6f5-a36486d09853:唯一标识符的40位不重复的字符串
/boot:挂载点
4:挂载的经典案例
需求是给我们的Linux系统增加一个新的硬盘,并且挂载到/home/newdisk
- 步骤
1:给虚拟机添加硬盘
虚拟机----设置----硬盘----添加----硬盘----选中SCSI,下一步----创建新的虚拟磁盘----分配空间,选中将虚拟磁盘拆分成多个文件,下一步----完成 重启即可查看到sdb分区
2:分区
fdisk /dev/sdb----n----w 分区即分好
开始对/sdb分区:
m:显示命令列表
p:显示磁盘分区 同 fdisk -1
n:新增分区
d:刷新分区
w:写入并退出
3:格式化
mkfs -t ext4 /dev/sdb1 其意思:把我们的/dev/sdb1格式化成ext4(分区类型)
4:挂载
先创建一个目录:mkdir /home/newdisk----挂载:mount /dev/sdb1 /home/newdisk
取消挂载:进入那个目录(home)----umount /dev/sdb1
5:设置可以自动挂载(永久挂载)
vim /etc/fstab----在其内那些分区的第一行添加:
/dev/sdb1 /home/newdisk ext4 defaults 0 0-----退出去后:mount -a—完成
5:磁盘查询实用指令
5.1:df -h 查询系统整体磁盘使用情况
语法:df -h
例:查询系统整体磁盘使用情况
df -lh:以列表的方式显示信息
5.2:du -h查询指定目录的磁盘占用情况
语法:du -h /目录
查询指定目录的磁盘占用情况,默认为当前目录
-s:指定目录占用大小汇总
-h:带计量单位
-a:含文件
–max-depth=1:子目录深度
-c:列出明细的同时,增加汇总值
例:查询/opt目录的磁盘占用情况,深度为1
du --ach --max-depth=1 /opt
6:常用磁盘查询案例
1:统计/home文件夹下文件的个数
ls -l /home | grep “^-” | wc -l
解释:grep “^-”:过滤查找以-打头的 ^:定位符
wc -l:wc就是统计
2:统计/home文件夹下目录的个数
ls -l /home | grep “^d” | wc -l
3:统计/home文件夹下文件的个数,包括子文件夹里的
ls -lR /home | grep “^-” | wc -l
解释:R:是递归的意思,可统计包括子文件下的
4:统计文件夹下目录的个数,包括子文件夹里的
ls -lR /home | grep “^d” | wc -l
5:以树状显示目录结构
如果没有tree----就安装:yum install tree----一路:y
tree
十:实操篇-网络配置
1:NAT模式(网络环境)
Linux的:会有一个ip(192.168.184.125),用来连接Windows
Windows:一:VM虚拟网卡(192.168.184.1),用以和Linux连接
二:真实网卡(192.168.2.125),用以和外界联络
2:查看网络IP和网关
2.1:查看虚拟网络编辑器
编辑----虚拟网络编辑器(N)
2.2:修改IP
直接在虚拟网络编辑器中修改
2.3:查看网关
因为要出去,故而要和Windows的网关保持一致
编辑----虚拟网络编辑器(N)----选中最上面的那个要查看的名称----点击NAT设施(S)----即可发现
2.4:查看Windows环境的中VMnet8网络配置
在Windows中通过指令(ipconfig)查看
2.5:通过Ping可测试主机之间网络连通性
指令:ping 目的主机 功能描述
例:ping www.souhu.com
3:Linux网络环境配置
3.1:自动获取IP
登陆后,通过界面的来设置自动获取IP
系统----首选项----网络连接----点那个System eth0----编辑----选上自动连接
缺点:Linux启动后会自动获取IP,但每次IP可能不一样。不适用于做服务器,因为服务器的IP是固定的,不能变。
3.2:指定固定的IP地址
直接修改配置文件来指定IP,并可以连接到外网
vim /etc/sysconfig/network-scipts/ifcfg-eth0
ifcfg-eth0:IP存放地
要求:将IP地址配置成静态的,IP地址为192.168.184.130
执行:vim /etc/sysconfig/network-scipts/ifcfg-eth0
注:这几个信息是必须有的,如果没有就加上。
IPADDR=192.168.184.125
GATEWAY=192.168.184.2 (网关)
DNS1=192.168.184.2 (域名,和网关保持一致)
开始修改:IPADDR=192.168.184.130 (指定IP)
BOOTPROTO=static (以静态方式获取IP)
ONBOOT=yes (启用)
保存退出----重启网络服务(service network restart)
十一:实操篇-进程
1:进程基本介绍
1:在Linux中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一个ID号
2:每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如www服务器
3:每个进程都可能以两种方式存在的:前台和后台
所谓前台进程就是用户目前的屏幕上可以进行操作的。
后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。
4:一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才结束。
1.1:ps -aux显示系统执行的进程
语法:ps -a :显示当前终端的所有进程信息
语法:ps -u :以用户的格式显示进程信息
语法:ps -x :显示后台进程运行的参数
例:使用ps -aux | more
ps显示的信息选项:
USER 用户
PID 进程识别号
%CPU 占用的CPU
%MEM 占用内存
VSZ 使用虚拟的内存
RSS 使用物理内存情况
TTY 终端机号
STAT 当前进程的状态(S:休眠 R:运行 N:表示进程拥有比普通优先级更低的优先级 D:短期等 待 Z:僵死进程 T:被跟踪或者被停止)
START 启动时间
TIME 此进程所消耗CPU时间
COMMAND 进程执行时的命令行
1.2:ps -ef查询所含父进程的
语法:ps -ef :以全格式显示当前所有的进程
-e:显示所有进程
-f:全格式
PPID 父进程
UID 用户ID
CMD 启动进程所用的命令和参数
C CPU用于计算执行优先级的因子。数值越大,越表明是CPU密集型运算
例:使用ps -ef | grep sshd
查询sshd的父进程
2:kill和killall终止进程
若某个进程执行一半需要停止,或是已消了很大的系统资源时,此时可以考虑停止该进程
语法:kill 选项 进程号 (通过进程号杀死进程)
语法:killall 进程名称 (通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)
选项:-9:表示强迫进程立即停止
例:1:踢掉某个非法登录用户jack
先查询有哪些远程登录,和进程号:ps -aux | grep sshd----kill 4010
注:sshd时远程登录
2:终止远程登录服务sshd,在适当时候再次重启sshd服务
先查询有哪些远程登录,和进程号:ps -aux | grep sshd----kill 3908 (直接弄掉所有远程登录)----
3:终止多个gedit编辑器
killall gedit
4:强制杀掉一个终端(终端的名称:bash)
先查询终端进程:ps -aux | grep bash----只要有(/bin/bash)的,就代表其是一个终端
kill -9 4119
2.1:pstree查看进程树
语法:pstree 选项
选项:-p:显示进程的PID
-u:显示进程的所属用户
例:1:请你树状的形状显示进程的pid
pstree -p
2:请你树状的形式进程的用户id
pstree -u
3:service服务管理
服务本质就是进程,但是是运行在后台的,通常都会监听某个窗口,等待其他程序的请求,比如(mysql、sshd),因此我们又称为守护进程
语法:service 服务名
服务名:start:启动一个服务
stop:停止一个服务
restart:重启
reload:重载
status:状态
注:在CentOS7.0以后,不再是service,而是systemctl
3.1:关闭打开防火墙(iptables)
例:查看当前防火墙的状况,关闭防火墙和重启防火墙
查看状况:service iptables status----关闭service iptables stop----重启service iptables restart
细节讨论:
1:关闭或者启用防火墙后,立即生效
2:这种方式只是临时生效,当重启系统后,还是回归以前对服务的设置
3:如果希望设置某个服务自启动或者关闭永久生效,要使用chkconfig指令
3.2:telnet测试端口是否在用
telnet ip 端口
3.3:chkconfig设置查看服务自启动
注:需重启
语法:查看服务:chkconfig --list | grep xxx
要是查看所有的:chkconfig --list
语法:和上一个一样:chkconfig 服务名 --list
语法:设置:chkconfig --level 5 服务名 on/off
例:设置sshd,5自启动
chkconfig --level 5 sshd on
3.4:查看服务名
1:使用setup -> 系统服务
2:ls -l /etc/init.d/服务名称
3.5:例
1:将sshd服务在运行级别5下设置为不自动启动
chkconfig --level 5 sshd off
2:当运行级别为5时关闭防火墙
chkconfig --level 5 iptables off
3:在所有运行级别下关闭防火墙
chkconfig iptables off
4:监控服务
4.1:top动态监控
top在执行一短时间可以更新正在运行的进程
语法:top 选项
选项:-d 秒数:指定top命令每隔几秒更新,默认值三秒在top交互模式当中可以执行的命令
-i:使top不显示任何闲置或者僵死进程
-p:通过指定监控进程ID来仅仅监控某个进程的状态
注:使用top查询后
top 20:52:22 up 3:32, 3 users, load average: 0.35, 0.24, 0.30
20:52:22:当前时间
3:32:运行时间
3 users:当前登录用户数
load average: 0.35, 0.24, 0.30:负载均衡
注:Mem是内存使用情况
按“q”退出
4.2:实例(存在语法)
1:监视特定用户
top:输入此命令,回车,查看执行的进程
u:然后输入“u”回车,再输入用户名
2:终止指定的过程
top:输入此命令,回车,查看执行的进程
k:然后输入“k”回车,再输入要结束的进程ID号
3:指定系统状态更新的时间(每隔10秒自动更新)
top -d 10
4.3:动态监控的互动指令
P:以CPU使用率排序,默认就是此项
M:以内存的使用率排序
N:以PID(进程号)排序
q:退出top
4.4:netstat监控网络状态
语法:netstat 选项
选项:-an:按一定顺序排列输出
-p:显示哪个进程载调用
例:请查看sshd的服务的信息
netstat -anp sshd
查看所有的网络服务
netstat -anp | more
十二:实操篇-RPM与YUM
1:RPM
一种用于互联网下载包的打包及安装工具
rpm包名基本格式:
一个rpm包:firefox-45.0.1-1.el6.centos.x86_64.rpm
名称:firefox
版本号:45.0.1-1
适用的操作系统:el6.centos.x86_64,表示centos6.x的64位系统
注:如果是i686、i386表示32位系统,noarch表示通用
2:rpm包的简单查询指令
查询已经安装的rpm列表:rpm -qa | grep xx
3:rpm包的查询指令
rpm -qa:查询所安装的所有rpm软件包
例:rpm -qa | more
rpm -q 软件包名:查询该软件是否安装
rpm -qi 软件包名:查询软件包信息
rpm -ql 软件包名:查询软件包中的文件
rpm -qf 文件全路径名:查询文件所属的软件包
4:rpm包的卸载安装
4.1:卸载
语法:rpm -e RPM包的名称
注:强制删除增加 --nodeps即可,不建议这样做
例:删除firefox软件包
rpm -e firefox
注:删除一个包时,但另一个正在使用,两个选择,放弃或者强制
4.2:安装
语法:rpm -ivh RPM包全路径名称
参数说明:i=install 安装
v=verbose 提示
h=hash 进度条
实例:先找到firefox的安装rpm包,你需要挂载上我们安装centos的iso文件,然后到/media下去找rpm包
挂载:虚拟机----设置—CD/DVD----使用ISO映像文件
注:切换到/opt安装
5:Yum
yum是一个Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包
5.1:查询yum服务器是否有需要安装的软件
语法:yum list | grep xx
5.2:安装指定的yum包
语法:yum install xxx
例:请使用yum的方式来安装firefox
先查看firefox这个rpm包再yum服务器有没有yum list | grep firefox
安装:yum install firefox
十三:JavaEE定制篇
接下来进入傻瓜式操作系列
1:JDK安装和配置
先将软件通过xftp5上传到/opt----解压缩到/opt----配置环境变量的配置文件vim /etc/profile:
写到末尾
JAVA_HOME=/opt/jdk的版本号
PATH=/opt/jdk的版本号/bin;$PATH
export JAVA_HOME PATH
注:需要注销用户,环境变量才能生效:logout
注:写一个hello.java文件,用java hello运行
2:tomcat安装
解压到/opt----启动tomcat 输入 ./startup.sh----开放端口vim /etc/sysconfig/iptables
开放端口:输入后会出来的有一个这个:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
将22改成8080
重启防火墙:service iptables restart
完成!
3:MySQL安装
先进入/opt目录
执行:yum -y install make gcc-c++ cmake bison-devel ncurses-devel
执行:tar xvf mysql-5.6.14.tar.gz
进入:cd mysql-5.6.14
编译:cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
编译安装:make && make install
查看是否有mysql用户及用户组:cat /etc/passwd 查看用户列表
cat /etc/group 查看用户组列表
如果没有就创建:groupadd mysql
useradd -g mysql mysql
修改/usr/local/mysql权限:chown -R mysql:mysql /usr/local/mysql
初始化配置,进入安装路径(在执行下面的指令),执行初始化配置脚本,创建系统自带的数据库和表:
进入 cd /usr/local/mysql
初始化 scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
注:在CentOS 6.8版操作系统的最小安装完成后,在/etc目录下会存在一个my.cnf,需要将此文件更名为其他的名字,如:/etc/my.cnf.bak,否则,该文件会干扰源码安装的MySQL的正确配置,造成无法启动。修改名称,防止干扰:mv /etc/my.cnf /etc/my.cnf.bak
并设置开机自启动
[注意在 /usr/local/mysql 下执行]
先执行:cp support-files/mysql.server /etc/init.d/mysql
后执行:chkconfig mysql on
service mysql start --启动MySQL
修改密码:
先进入:cd /usr/local/mysql/bin
后:./mysql -u root -p
后:mysql> SET PASSWORD = PASSWORD(‘12345’); 12345就是写密码的地方
quit退出
4:redis安装,所有安装均可采用
步骤:1:下载获得redis-3.0.4.tar.gz后将它放入我们Linux目录/opt
2:解压命令:tar -zxvf redis-3.0.4.tar.gz
3:解压完成后进入目录:cd redis-3.0.4
4:执行:make (这玩意是用来编译的,大多数的源代码包都经过这一步进行编译)。会显示gcc命令未找到,cc命令未找到。其是由C语言写的。其需要编译安装。所以需要下载gcc和gcc-c++
5:yum install gcc
yum install gcc-c++
检测是否安装成功:gcc -v
6:再在redis-3.2.5目录下再次执行make
会报错
解决方案:运行make distclean (清除残余文件) 之后再make
7:执行:make install (安装的意思)
十四:大数据定制篇
1:简介
需要编写Shell程序来管理集群
也就是说:Shell驱动内核
Shell是一个命令解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以通过Shell来启动、挂起、停止甚至编写一些程序
1.1:脚本格式要求
1:脚本以#!/bin/bash开头
2:脚本需要有可执行权限
1.2:创建一个Shell脚本
例:创建一个Shell,输出hello,word
先创建一个目录:mkdir shell,再进入其内
创建一个文件:vim myShell.sh
给其写入:#!/bin/bash
echo “hello,wordd!”
执行:分配权限
chmod 744 myShell.sh:给所有者一个可执行的权限
执行:./myShell.sh :相对路径
/root/shell/myShell.sh :绝对路径
2:变量
Shell变量分为:系统变量和用户自定义变量
系统变量: H O M E 、 HOME、 HOME、PWD、 S H E L L 、 SHELL、 SHELL、USER等等
比如:echo $HOME
2.1:输出系统变量
先创建一个目录:mkdir shell,再进入其内
创建一个文件:vim myShell.sh
给其写入:#!/bin/bash
echo “echo $HOME”
再给其所有者可执行的权限即可
2.2:set显示当前Shell中所有的变量
2.3:Shell变量的定义
基本语法:定义变量:变量=值
撤销变量:unset 变量
声明静态变量:readonly 变量 注:不能unset,会报错
例:全都进入权限已经配置好的文件
1:定义变量A
A=100 //定义
echo "A= A " / / 引 用 和 输 出 的 时 候 需 要 写 A" //引用和输出的时候需要写 A"//引用和输出的时候需要写
2:撤销变量A
unset
echo “A=$A”
3:声明静态的变量B=2,不能unset
readonly B=2
echo “B=$B”
4:可把变量提升为全局环境变量,可提供其他shell程序使用
2.4:变量定义规则
不能以数字开头
符号两侧不能有空格
变量名称一般习惯大写
2.5:将命令返回值赋值给变量
1:A='ls -la’反引号(左上角,esc下面)运行里面的命令,并把结果返回给变量A
例:RESULT=‘ls -la /home’ 将ls -la /home的结果返回到RESULT
echo $RESULT
2:A=$(ls -la)等价于反引号
例:MY_DATA=$(data)
echo “data=$MY_DATA” 比上一个的echo有点变化
3:环境变量
语法:export 变量名=变量值 (将shell变量输出为环境变量)
source 配置文件 (让修改后的配置信息立即生效)
echo $变量名 (查询环境变量的值)
例:1:在/etc/profile文件中定义TOMCAT_HOME环境变量
vim /etc/profile—输入:TOMCAT_HOME=/opt/tomcat----再输入:export TOMCAT_HOME(export导入)----:wd保存退出----source /etc/profile
即可在外面查询
2:查看环境变量TOMCAT_HOME的值
echo $TOMCATA_HOME
3:在另外一个shell程序中使用TOMCAT_HOME
echo “tomcathome=$TOMCAT_HOME”
注:在使用环境变量之前,需要让其生效
source /etc/profile
4:位置参数变量,$n $* $@ $#获取命令行的参数
通过这个可以获取在命令行中设置的参数
语法:$n (n为数字,$0代表命令本身,$1- 9 代 表 第 一 到 第 九 个 参 数 , 十 以 上 的 参 数 需 要 用 大 括 号 抱 起 来 , 如 : 9代表第一到第九个参数,十以上的参数需要用大括号抱起来,如: 9代表第一到第九个参数,十以上的参数需要用大括号抱起来,如:{11})
∗ ( 这 个 变 量 代 表 命 令 行 中 所 有 的 参 数 , * (这个变量代表命令行中所有的参数, ∗(这个变量代表命令行中所有的参数,*把所有的参数看成一个整体)
@ ( 这 个 变 量 也 代 表 命 令 行 中 所 有 的 参 数 , 不 过 @ (这个变量也代表命令行中所有的参数,不过 @(这个变量也代表命令行中所有的参数,不过@把所有的参数区分对待)
$# (这个变量代表命令行中所有参数的个数)
例:编写一个Shell脚本positionPara.sh,在脚本中命令行的各个参数信息
前面的省略,直接进入到shell里面:#!/bin/bash
echo “$0 $1 $2”
echo “ ∗ " − − − − e c h o " *"----echo " ∗"−−−−echo"@”
echo “参数个数=¥#”
5:预定义变量
就是shell设计者事先已经定义好的变量,可以直接在shell脚本中使用
语法:$$ (当前进程的进程号(PID))
$! (后台运行的最后一个进程的进程号(PID))
$? (最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果非0(自己设置是谁),则证明上一个命令执行不正确了)
例:在一个shell脚本中简单使用下预定义变量
弄两个文件:myShell.sh(当作后台执行)和perVar.sh 。也就是说,在perVar.sh中执行myShell.sh,最后弄完后,按ctrl+c退出
在perVar.sh中写:
#!/bin/bash
echo “当前的进程号=$$”
#后台的运行方式
./myShell.sh & (要写这玩意,才能查了)
echo “最后的进程的号=$!”
echo “执行的值=$?”
6:运算符
基本语法:“ ( ( 运 算 式 ) ) ” 或 “ ((运算式))”或“ ((运算式))”或“[运算式]”
基本语法:expr m+n 注:expr运算符之间要有空格
基本语法:expr m-n
基本语法:expr *,/,% 乘,除,取余
例:计算(2+3)*4的值
进入shell后:#!/bin/bash
RESULT1=$(((2+3)*4))
echo “result1=$RESULT1”
给权限,执行结果为:result1=20
例:$[运算式]
#!/bin/bash
RESULT2=$[(2+3)*4]
echo “result2=$RESULT2”
结果一样
例:expr
TEMP=expr 2+3
注:那个字体变小的是用esc下面那个`包含注了
RESULT3=expr $TEMP \* 4
echo “result3=$RESULT3”
例:请求输出命令行的两个参数[整数]的和
#!/bin/bash
SUM=$[$1+$2]
echo “SUM=$SUM”
注:执行:./hello.sh 10 8 (即10+8)
7:条件判断
语法:[ 条件] (注意:条件前后有空格)
非空返回true,可使用$?验证
例:[ atguigu ] 返回true
[] 返回false
[ condition ] && echo OK || echo notok 条件满足,执行后面的语句
常用判断条件:
7.1:两个整数的比较
=:字符串比较
-lt:小于
-le:小于等于
-eq:等于
-gt:大于
-ge:大于等于
-ne:不等于
7.2:按照文件权限进行判断
-r:有读的权限 [ -r 文件]
-w:有写的权限
-x:有执行的权限
7.3:按照文件类型进行判断
-f:文件存在并且是一个常规的文件
-e:文件存在
-d:文件存在并且是一个目录
例:1:“ok100"是否等于"ok”
进入shell----#!/bin/bash
if [ “ok100” = “ok” ]
then
echo “equal”
fi
2:23是否大于32
进入shell----#!/bin/bash
if [ 23 -gt 22 ]
then
echo “大于”
fi
3:/root/install.log 目录中的文件是否存在
进入shell----#!/bin/bash
if [ -e /root/install.log ]
then
echo “存在”
fi
8:流程控制
8.1:if
语法:if [ 条件判断式 ];then
程序
fi
或者:if [ 条件判断式 ]
then
程序
elif[ 条件判断式 ]
then
程序
fi
例:编写一个shell程序,如果输入的参数,大于等于60,则输出"及格了",反之,输出"不及格"
#!/bin/bash
if [ $1 -ge 60]
then
echo “及格了”
elif [ $1 -lt 60 ]
then
echo “不及格”
fi
8.2:case语句
语法:case $变量名 in
“值1”)
如果等于值1,则执行程序1
;;
“值2”)
如果等于值2,则执行程序2
;;
…
*)
如果变量都不是以上的值,则执行此程序
;;
esac
例:当命令行参数是1时,输出"周一",是2时,输出"周二",其他情况输出"other"
#!/bin/bash
case $1 in
“1”)
echo “周一”
;;
“2”)
echo “周二”
;;
*)
echo “other”
;;
esac
8.3:for循环
语法:for 变量 in 值1 值2 值3…
do
程序
done
例:打印命令行输入的参数
#!/bin/bash
for i in “$*”
do
echo “the num is $i”
done
echo “===================”
语法:for (( 初始值;循环控制条件;变量变化 ))
do
程序
done
例:从1加到100的值输出显示
#!/bin/bash
SUM=0
for((i=1;i<=100;i++))
do
SUM= [ [ [SUM+$i]
done
echo “sum=$SUM”
8.4:while循环
语法:while [ 条件判断式 ]
do
程序
done
例:从命令行输入一个数n,统计从1+…+n的值是多少个
#!/bin/bash
SUM=0
i=0
while [ $i -le $1]
do
SUM= [ [ [SUM+$i]
done
echo “sum=$SUM”
9:read读取控制台输入
语法:read(选项)(参数)
选项:-p:指定读取值时的提示符
-t:指定读取时等待的时间(秒),如果没有在指定的时间内输入,就不再等待了
参数:指定读取值的变量名
例:1:读取控制台输入一个num值
#!/bin/bash
read -p “请输入一个数num1=” NUM1
echo “你输入的值是num1=$NUM1”
2:读取控制台输入一个num值,在10秒内输入
#!/bin/bash
read -t 10 -p “请输入一个数num2=” NUM2
echo “你输入的值是num2=$NUM2”
9:函数
9.1:函数简介
shell编程和其它编程语言一样,有系统函数,也可以自定义函数
9.2:basename dirname系统函数
- basename:返回完整路径最后 / 的部分,常用于获取文件名
语法:basename [pathname] [suffix]
语法:basename [string] [suffix] (basename命令会删除所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来)
选项:suffix为后缀,如果suffix被指定了,basename会将pathname或string中的suffix去掉
- dirname:返回完整路径最后 / 的前面的部分,常用于返回路径部分
dirname 文件绝对路径 (从给定的包含绝对路径的文件名中去除文件名,然后返回剩下的路径(目录的部分))
例:1:请返回/home/aaa/test.txt的"test.txt"部分
basename /home/aaa/test.txt
2:请返回/home/aaa/test.txt的"/home/aaa"部分
dirname /home/aaa/test.txt
9.3:自定义函数
语法: function 函数名()
{
Action;
[return int];
}
调用直接写函数名:函数名 [值]
例:计算输入两个参数的和(read),getSum
#!/bin/bash
function getSum(){
SUM=$[ n 1 + n1+ n1+n2 ]
echo “和是=¥SUM”
}
read -p “请输入第一个数n1” n1
read -p “请输入第二个数n2” n2
#调用getSUM
getSUM $n1 $n2
10:shell综合案例
需求分析
1:每天凌晨2:10分备份数据库atguiguDB 到 /data/backup/db
2:备份开始和备份结束都能给出相应的提示信息
3:备份后的文件要求以备份时间为文件名,并打包成 .tar.gz 的形式,比如:2020-03-12_230201.tar.gz
4:备份的同时,检查是否有10前备份的数据库文件,如果有进行删除
开始编写:vim /usr/sbin/mysql_db_backup.sh
#!/bin/bash echo "==========开始备份==========" echo "==========备份的路径是 $BACKUP/$DATETIME.tar.gz" #主机 HOST=localhost #用户名 DB_USER=root #密码 DB_PWD=root #备份数据库名 DATABASE=atguiguDB #创建备份的路径 #如果备份的路径文件夹存在,就使用,否则就创建 [ ! -d "$BACKUP/$DATETIME" ] && mkdir -p "$BACKUP/$DATETIME" #执行MySQL的备份数据库指令 mysqldump -u${DB_USER} -p${DB_PWD} --host=$HOST $DATABASE | gzip > $BACKUP/$DATETIME.sql.gz #打包备份文件 cd $BACKUP tar -zcvf $DATETIME.tar.gz $DATATIME #删除临时目录 rm -rf $BACKUP/$DATETIME #删除10天前的备份文件 find $BACKUP -mtime +10 -name "*.tar.gz" -exec rm -rf {} \; echo "==========备份文件成功=========="
十五:make
这玩意我是真的找不到一个好的了,心累
要是有找到的Q我,嘿嘿
while [ $i -le $1]
do
SUM= [ [ [SUM+$i]
done
echo “sum=$SUM”
9:read读取控制台输入
语法:read(选项)(参数)
选项:-p:指定读取值时的提示符
-t:指定读取时等待的时间(秒),如果没有在指定的时间内输入,就不再等待了
参数:指定读取值的变量名
例:1:读取控制台输入一个num值
#!/bin/bash
read -p “请输入一个数num1=” NUM1
echo “你输入的值是num1=$NUM1”
2:读取控制台输入一个num值,在10秒内输入
#!/bin/bash
read -t 10 -p “请输入一个数num2=” NUM2
echo “你输入的值是num2=$NUM2”
9:函数
9.1:函数简介
shell编程和其它编程语言一样,有系统函数,也可以自定义函数
9.2:basename dirname系统函数
- basename:返回完整路径最后 / 的部分,常用于获取文件名
语法:basename [pathname] [suffix]
语法:basename [string] [suffix] (basename命令会删除所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来)
选项:suffix为后缀,如果suffix被指定了,basename会将pathname或string中的suffix去掉
- dirname:返回完整路径最后 / 的前面的部分,常用于返回路径部分
dirname 文件绝对路径 (从给定的包含绝对路径的文件名中去除文件名,然后返回剩下的路径(目录的部分))
例:1:请返回/home/aaa/test.txt的"test.txt"部分
basename /home/aaa/test.txt
2:请返回/home/aaa/test.txt的"/home/aaa"部分
dirname /home/aaa/test.txt
9.3:自定义函数
语法: function 函数名()
{
Action;
[return int];
}
调用直接写函数名:函数名 [值]
例:计算输入两个参数的和(read),getSum
#!/bin/bash
function getSum(){
SUM=$[ n 1 + n1+ n1+n2 ]
echo “和是=¥SUM”
}
read -p “请输入第一个数n1” n1
read -p “请输入第二个数n2” n2
#调用getSUM
getSUM $n1 $n2
10:shell综合案例
需求分析
1:每天凌晨2:10分备份数据库atguiguDB 到 /data/backup/db
2:备份开始和备份结束都能给出相应的提示信息
3:备份后的文件要求以备份时间为文件名,并打包成 .tar.gz 的形式,比如:2020-03-12_230201.tar.gz
4:备份的同时,检查是否有10前备份的数据库文件,如果有进行删除
开始编写:vim /usr/sbin/mysql_db_backup.sh
#!/bin/bash echo "==========开始备份==========" echo "==========备份的路径是 $BACKUP/$DATETIME.tar.gz" #主机 HOST=localhost #用户名 DB_USER=root #密码 DB_PWD=root #备份数据库名 DATABASE=atguiguDB #创建备份的路径 #如果备份的路径文件夹存在,就使用,否则就创建 [ ! -d "$BACKUP/$DATETIME" ] && mkdir -p "$BACKUP/$DATETIME" #执行MySQL的备份数据库指令 mysqldump -u${DB_USER} -p${DB_PWD} --host=$HOST $DATABASE | gzip > $BACKUP/$DATETIME.sql.gz #打包备份文件 cd $BACKUP tar -zcvf $DATETIME.tar.gz $DATATIME #删除临时目录 rm -rf $BACKUP/$DATETIME #删除10天前的备份文件 find $BACKUP -mtime +10 -name "*.tar.gz" -exec rm -rf {} \; echo "==========备份文件成功=========="
十五:make
这玩意我是真的找不到一个好的了,心累
要是有找到的Q我,嘿嘿
这篇关于Linux系统指南的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-18git仓库有更新,jenkins 自动触发拉代码怎么配置的?-icode9专业技术文章分享
- 2024-12-18Jenkins webhook 方式怎么配置指定的分支?-icode9专业技术文章分享
- 2024-12-13Linux C++项目实战入门教程
- 2024-12-13Linux C++编程项目实战入门教程
- 2024-12-11Linux部署Scrapy教程:新手入门指南
- 2024-12-11怎么将在本地创建的 Maven 仓库迁移到 Linux 服务器上?-icode9专业技术文章分享
- 2024-12-10Linux常用命令
- 2024-12-06谁看谁服! Linux 创始人对于进程和线程的理解是…
- 2024-12-04操作系统教程:新手入门及初级技巧详解
- 2024-12-04操作系统入门:新手必学指南