Linux命令操作
基础常用命令
pwd 【显示当前⽬录路径】
ls 【list directory contents,显示当前⽂件夹下的⽬录或⽂件】 常⽤选项: -a 显示所有的⽂件夹和⽂件,包括隐藏⽂件 -l 以详细的形式显示 简写:ll 显示当前所有的文件和文件夹,以详细形式显示
cd 【进⼊⼀个路径或者⽬录,绝对路径或者相对路径都可以】 ⽤法: cd [路径],⽐如 cd ~(代表进⼊家⽬录) cd . 【当前⽬录】 cd .. 【进⼊上⼀级⽬录】 cd /home 【进⼊绝对路径home⽬录下】 这里如果访问目录前面带了/就表示用的是绝对路径,否则就是相对路径
Linux⽂件与⽬录管理
- 绝对路径: 路径的写法,由根⽬录 / 写起,例如: /usr/share/doc 这个⽬录。
- 相对路径: 路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd …/man
⽬录⽂件
mkdir:创建⼀个新的⽬录 rmdir:删除⼀个空的⽬录 cp: 复制⽂件或⽬录 [root@www ~]# cp [-adfilprsu] 来源档(source) ⽬标档(destination) -a:相当於 -pdr 的意思,⾄於 pdr 请参考下列说明;(常⽤) -d:若来源档为连结档的属性(link file),则复制连结档属性⽽⾮⽂件本身; -f:为强制(force)的意思,若⽬标⽂件已经存在且⽆法开启,则移除后再尝试⼀次; -i:若⽬标档(destination)已经存在时,在覆盖时会先询问动作的进⾏(常⽤) -l:进⾏硬式连结(hard link)的连结档创建,⽽⾮复制⽂件本身; -p:连同⽂件的属性⼀起复制过去,⽽⾮使⽤默认属性(备份常⽤); -r:递归持续复制,⽤於⽬录的复制⾏为;(常⽤) -s:复制成为符号连结档 (symbolic link),亦即『捷径』⽂件; -u:若 destination ⽐ source 旧才升级 destination ! rm: 移除⽂件或⽬录 -f :就是 force 的意思,忽略不存在的⽂件,不会出现警告信息; -i :互动模式,在删除前会询问使⽤者是否动作 -r :递归删除啊!最常⽤在⽬录的删除了!这是⾮常危险的选项!!! mv: 移动⽂件与⽬录,或修改⽂件与⽬录的名称 [root@www ~]# mv [-fiu] source destination -f :force 强制的意思,如果⽬标⽂件已经存在,不会询问⽽直接覆盖; -i :若⽬标⽂件 (destination) 已经存在时,就会询问是否覆盖! -u :若⽬标⽂件已经存在,且 source ⽐较新,才会升级 (update)
使⽤ man [命令] 来查看各个命令的使⽤⽂档,如 :man cp
普通⽂件
创建⽂件命令
touch: 创建⼀个新的空⽂件
查看⽂件命令
cat: 以只读的⽅式打开⼀个⽂件。可以加 -n 表示带上⾏号(适合查看⽂件内容⽐较少的) more: 和cat功能类似,不过是以分⻚的形式⼀⻚⼀⻚显示数据。最基本的指令就是按空⽩键(space) 就往下⼀⻚显示,按 b 键就会往回(back)⼀⻚显示。 +n :从笫n⾏开始显示 -c :从顶部清屏,然后显示 less: 也⽤来分⻚显示数据,但是功能⽐more强⼤。并不会⼀次性将全部⽂件读取才显示,⽽是根据显示 的需要加载对应的数据。 -f :强迫打开特殊⽂件,例如外围设备代号、⽬录和⼆进制⽂件 -m :显示类似more命令的百分⽐ -N :显示每⾏的⾏号 操作命令 b 向后翻⼀⻚ d 向后翻半⻚ h 显示帮助界⾯ q 退出less 命令 u 向前滚动半⻚ y 向前滚动⼀⾏ head: 查看⼀个⽂件,取开头的⼀部分内容。head filename,或者添加选项: head -5 filename tail:查看⼀个⽂件的尾部内容。tail -5 filename,查看⽂件的最后五⾏ 常⻅⽤法:tail -f filename,尾部持续不断地输出内容。Control + c退出。 例如:tail -5f filename
最常用的就是 tail -f filename
重定向和追加
echo: 输出内容到控制台。⽐如输出Linux的环境变量到控制台 echo $PATH >指令:输出重定向(会将原来的内容覆盖) >>指令:追加(不会覆盖原⽂件的内容,追加到底部) echo hello > a.txt ls -l >> a.txt cat a.txt > b.txt(⽂件可以存在,可以不存在)
压缩与解压
tar -c:产⽣.tar⽂件 -v:显示详细信息 -z:打包同时压缩 -f:指定压缩后的⽂件名 -x:解压.tar⽂件 压缩 :tar -zcvf combine.tar.gz 1.txt 解压 :tar -zxvf combine.tar.gz -C java/ -C 表示解压到指定⽬录
注意:如果需要解压和压缩为 .zip 格式的⽂件,那么需要安装zip和unzip软件
sudo apt-get install zip sudo apt-get install unzip
⽂本编辑
如果没有默认的vim工具,那就需要进行安装
sudo apt-get install vim
vim有三种模式:命令模式(Command mode)、插⼊模式(Insert mode)、末⾏模式(Last Line mode)。
命令模式
通过指令 vim filename 进⼊命令模式。除此之外,还有⼀些其他的参数,⽐如:
-r: 恢复上次vim打开时崩溃的⽂件 -R: 把指定的⽂件以只读的⽅式放⼊vim编辑器中 +: 打开⽂件,并把光标置于最后⼀⾏的⾸部 +n: 打开⽂件,并把光标置于第n⾏的⾸部
删除
x: 删除光标所在位置的字符 dd: 少出光标所在⾏ ndd: 删除当前⾏后n⾏⽂本(包括此⾏) dG: 删除光标所在⾏⼀直到⽂件末尾的所有内容 D: 删除光标位置到⾏尾的所有内容
删除的内容此时并没有被真正删除,⽽是在剪切版中,按下 p 键,可以将删除的内容粘贴回来。
移动
w: 光标移动⾄下⼀个单词⾸ e: 光标移动⾄下⼀个单词尾 b: 光标移动⾄上⼀个单词⾸ gg: 光标移动到⽂件开头 G: 光标移动⾄⽂件末尾 nG: 光标移动到第n⾏,n为数字 0或^:光标移动⾄当前⾏的⾏⾸ $: 光标移动⾄当前⾏的⾏尾
插⼊模式
在命令模式下,通过按下i、I、a、A、o、O这6个字⺟进⼊插⼊模式,不同的字⺟代表不同的进⼊⽅ 式。
i: 在当前光标位置前⾯插⼊随后输⼊的⽂本,光标后的⽂本相应向右移动 o: 在光标所在⾏下⾯插⼊新的⼀⾏,然后光标停在空⾏⾸,等待输⼊⽂本 O: 在光标所在⾏上⾯插⼊新的⼀⾏,然后光标停在空⾏⾸,等待输⼊⽂本 a: 在当前光标位置后⾯插⼊随后输⼊的⽂本,光标后的⽂本相应向右移动 A: 在光标所在⾏的⾏尾插⼊随后输⼊的⽂本
按下ESC键离开插⼊模式,进⼊命令模式
末⾏模式
在命令模式下,按下 : 键进⼊末⾏模式。在该模式下,可以使⽤⼀系列的指令,完成保存、离开vim编 辑器等功能。
:wq 保存并退出vim编辑器 :wq! 保存并强制退出vim编辑器 :q 不保存退出 :q! 不保存强制退出 :w 保存不退出 :w! 强制保存不退出 :w filename 另存到filename⽂件 ZZ 直接退出
⽤户管理
Linux系统是⼀个多⽤户、多任务的操作系统。多⽤户是指在linux操作系统中可以创建多个⽤户,⽽这 些多⽤户⼜可以同时执⾏各⾃不同的任务,⽽互不影响。
在Linux系统中,会存在着以下⼏个概念,
1.⽤户名:⽤户的名称
2.⽤户所属的组:当前⽤户所属的组。
3.⽤户的家⽬录:当前账号登录成功之后的⽬录,就叫做该⽤户的家⽬录。
添加⽤户
sudo useradd [选项] ⽤户名
eg:创建⼀个⽤户,⽤户名 test
sudo useradd test 注意这种⽅式创建出来的没有家⽬录,我们创建的时候需要带参数 sudo useradd -m test : -m 表示在 /home⽬录下创建⼀个家⽬录 sudo useradd -m -s /bin/bash test : 表示指定shell版本是我们熟悉的bash
给⽤户添加密码:
sudo passwd [⽤户名]
切换⽤户:
su [⽤户名]
删除⽤户
sudo userdel [⽤户名] -r: 不仅会删除该⽤户,还会删除该⽤户对应的家⽬录
组管理
添加组: groupadd [groupname] 创建⽤户的时候加⼊组: useradd -m -s /bin/bash -g [groupname] [username] 查看⽤户及组信息:id ⽤户名 修改⽤户所属组: usermod -g [groupname] [username]
权限管理
⽂件权限
查看
ciggar@ubuntu:~/Desktop/test$ ls -l total 40 # ⽂件信息 ⽂件数 ⽤户 组名 ⼤⼩ ⽉份 ⽇期 时间 ⽂件名 drwxr-xr-x 2 ciggar ciggar 4096 Aug 2 23:52 cskaoyan prw-r--r-- 1 ciggar ciggar 0 Aug 2 23:43 fifo_file -rw-r--r-- 1 ciggar ciggar 26825 Aug 3 00:25 main.txt -rw-r--r-- 1 ciggar ciggar 33 Aug 3 00:37 test.txt drwxr-xr-x 3 ciggar ciggar 4096 Aug 3 01:27 xxx
修改 通过 chmod 指令,可以修改⽂件或者⽬录的权限
[⽅式⼀]
chmod u=rwx,g=rw,o=r filename u:所有者 g:所有组 o:其他组,a代表全部
[⽅式⼆]
r=4,w=2,x=1 rwx = 4 + 2 + 1 = 7
chmod 751 等价于 u=rwx,g=rx,o=x
进程管理
查看进程
Linux系统中查看进程使⽤情况的命令是ps指令
常⻅选项: -e:
显示所有进程 -f:
全格式 a:
显示终端上的所有进程
u:以⽤户的格式来显示进程信息
x:显示后台运⾏的进程
⼀般常⽤格式为ps -ef或者ps aux两种。显示的信息⼤体⼀致,略有区别。
带[*]表示重要
UID:⽤户ID *PID:进程ID *PPID:⽗进程ID C:CPU⽤于计算执⾏优先级的因⼦。数值越⼤,表明进程是CPU密集型运算,执⾏优先级会降低;数值越 ⼩,表明进程是I/O密集型运算,执⾏优先级会提⾼ STIME:进程启动的时间 TTY:完整的终端名称 TIME:CPU时间 *CMD:完整的启动进程所⽤的命令和参数
USER:⽤户名称 *PID:程号 *%CPU:进程占⽤CPU的百分⽐ *%MEM:进程占⽤物理内存的百分⽐ VSZ:进程占⽤的虚拟内存⼤⼩(单位:KB) RSS:进程占⽤的物理内存⼤⼩(单位:KB) TT:终端名称(缩写),若为?,则代表此进程与终端⽆关,因为它们是由系统启动的 *STAT:进程状态,其中S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有⽐普通优先级更低的 优先级,R-正在运⾏,D-短期等待,Z-僵死进程,T-被跟踪或者被停⽌等 STARTED:进程的启动时间 TIME:CPU时间,即进程使⽤CPU的总时间 COMMAND:启动进程所⽤的命令和参数,如果过⻓会被截断显
两者区别: 如果想查看进程的CPU占⽤率和内存占⽤率,可以使⽤aux 如果想查看进程的⽗进程ID和完整的COMMAND命令,可以使⽤ef
如果想在进程列表中进⼀步筛选出想查询的进程,可以使⽤管道符
#搜索匹配进程 ps -ef | grep [搜索内容]
终⽌进程
kill [选项] 进程号 参数: -9:操作系统从内核级别强制杀死⼀个进程 -15:可以理解为操作系统发送⼀个通知告诉应⽤主动关闭
服务管理
服务本质上来说也是⼀个进程,只不过是在后台运⾏。监听着某⼀端⼝,等待该端⼝的请求到来,⽐如 ssh服务,监听着22端⼝;mysql服务,监听着3306端⼝;
tomcat服务,监听着80或者8080端⼝。
指令:(管理服务器的启动、停⽌、状态等)
systemctl start/stop/restart/status/reload 服务名称
例如:
#⽐如关闭ssh服务 systemctl stop sshd
⽹络管理
查看⽹络设置
ifconfig
查看网络端口占用情况
netstat -a:显示全部 -n:以数字的形式显示 -p:显示该连接被哪个应⽤程序占⽤PID eg: netstat -anp | grep 3306
第⼆种⽅式:
lsof -i: [端⼝号]
查看⽹络是否正常
ping [⽬的ip或者域名]
Java环境搭建
jdk环境
从oracle官⽹下载linux的jdk8,之后⽤winscp⼯具等将jdk8上传到linux机器上。
sudo mkdir /usr/local/java cd /usr/local/java sudo tar -zxvf jdk-8u231-linux-x64.tar.gz sudo mv jdk1.8.0_231/ jdk sudo vim /etc/profile
配置环境变量,添加下⾯⼏句
export JAVA_HOME=java路径 export JRE_HOME=jre路径 export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
执⾏命令 source /etc/profile 使环境变量配置⽂件⽣效
执⾏命令 java -version 查看JDK环境变量是否已经搭建好
Tomcat环境搭建
#先把tomcat压缩包丢进服务器⾥⾯去 mkdir /usr/local/tomcat sudo tar -zxvf apache-tomcat-8.5.50.tar.gz chmod -R 777 * cd bin #启动tomcat ./start.sh
Mysql环境搭建
使⽤apt源上为我们提供的Linux软件安装包来进⾏安装
sudo apt update sudo apt install mysql-server #如果是ubuntu 16.04 那么此时会要求你输⼊密码,如果是18.04,那么就直接完成安装了
Ubuntu18.04 安装完之后修改mysql密码
sudo cat /etc/mysql/debian.cnf 查看密码
#登陆mysql mysql -u debian-sys-maint -p #修改⽤户名密码 use mysql;#连接到mysql数据库 update mysql.user set authentication_string=password('123456') where user='root' and Host ='localhost' #修改密码123456是密码 update user set plugin="mysql_native_password" flush privileges quit
#重启mysql sudo service mysql restart
开启mysql远程访问
默认情况下,mysql只允许本地登录, 如果要开启远程连接,则需要进行以下操作: 1.需要修改/etc/mysql/mysql.conf.d/mysqld.cnf 文件。 找到bind-address = 127.0.0.1这一行 改为bind-address = 0.0.0.0即可 2.在连接服务器后,操作mysql系统数据库 命令为: mysql -u root -p use mysql; **3. 查询用户表命令:select User,authentication_string,Host from user; (这里也可以看出host默认都是localhost访问权限) 4. 创建可以访问的用户名即密码 GRANT ALL PRIVILEGES ON *.* TO '账号'@'%' IDENTIFIED BY '密码'; 如果以上代码报错,请手动输入一边试试 %代表所有主机,也可以具体到你的主机ip地址 注:用户名处,填写自己的用户名, 密码处,填写自己访问的密码 创建完成后再次查询用户表: 5.刷新权限: flush privileges; 这一步一定要做,不然无法成功! 这句表示从mysql数据库的grant表中重新加载权限数据 因为MySQL把权限都放在了cache中,所以在做完更改后需要重新加载。 执行完这两步,再次查询用户表命令:select User,authentication_string,Host from user 可以看到成功添加了用户 6.重新启动mysql服务 service mysql restart • 40 • 41 • 42 • 43
修改mysql字符编码
显示原来编码:
show variables like ‘%character%’;
修改/etc/my.cnf
vi /etc/my.cnf
将下面的粘贴进去
[mysqld]
character_set_server=utf8
init_connect=‘SET NAMES utf8’
g-ixogXSRP-1706540409674)
最后重启数据库:
的用户名, 密码处,填写自己访问的密码
创建完成后再次查询用户表:
5.刷新权限: flush privileges;
这一步一定要做,不然无法成功! 这句表示从mysql数据库的grant表中重新加载权限数据
因为MySQL把权限都放在了cache中,所以在做完更改后需要重新加载。
执行完这两步,再次查询用户表命令:select User,authentication_string,Host from user 可以看到成功添加了用户
6.重新启动mysql服务
service mysql restart
**修改mysql字符编码** 显示原来编码: show variables like '%character%'; 修改/etc/my.cnf vi /etc/my.cnf 将下面的粘贴进去 [mysqld] character_set_server=utf8 init_connect='SET NAMES utf8' [外链图片转存中...(img-ixogXSRP-1706540409674)] 最后重启数据库: systemctl restart mysqld