Linux常用命令

Linux基本命令及操作

简介

PC

  • Window:个人用户、很友好的图形化界面和操作体验
  • Linux:服务器领域;安全、稳定、开源
  • MacOS:非常优秀的操作体验,软硬件集成度非常高

Unix:操作系统的鼻祖、大型机操作系统

部署

  • linux
  • jdk
  • mysql
  • tomcat
  • nginx

发行版=操作系统内核+软件

Ubuntu:linux个人操作系统

OPenSUSE:教育行业

RedHat:行业的服务器操作系统

Centos:用RedHat的源代码编译成的免费服务器操作系统


最美的Linux发行版:ElementryOS

国内的深度OS:DeepinOS

Xshell:SSH客户端,远程连接linux操作系统

基本命令

cd

  • 英文全称:change dirtory

  • 特殊目录:

    • cd / 根目录
    • cd ~用户目录
    • cd .. 上一级目录
    • cd -来回切换

pwd

  • 英文全称:present working directory

  • 作用:查看当前目录

ls

  • 作用:列出当前目录的文件
  • ls -a列出所有,包括隐藏的文件及文件夹
  • ls -l长列表模式
  • ls --help|less查看ls的帮助,并且将输出作为less的输入
    • –help/-h:

man

  • 英文全称:manual(手册)
  • 安装方法: `yum install man
  • J 向下 k向上 q退出

查看历史命令

history | tail -n 20显示历史命令的最后20条

history | head -n 10显示历史命令的最开始10条

tail -f notes.log此命令显示 notes.log 文件的最后 10 行。当将某些行添加至 notes.log 文件时,tail 命令会继续显示这些行。 显示一直继续,直到您按下(Ctrl-C)组合键停止显示。

查看运行中的Java程序

jps

文件管理

  • cat 文件名查看文件内容
  • less 文件名滚动查看文件内容
  • touch 文件名创建文件
  • vi 文件名编写文件
  • >> 例:ls –help >>lshelp.txt
    • 将ls的帮助内容,输出到txt文件中,不覆盖[>代表覆盖输出]
  • rm 删除文件 -r可以删除文件夹 rm -rf
  • mkdir 创建文件夹
    • mkdir -p a/b/c一次性创建多个文件
  • cp –r test/ newtest 将当前目录”test/“下的所有文件复制到新目录”newtest”下
    • 用户使用该指令复制目录时,必须使用参数”-r”
  • mv 移动/重命名
  • ln 创建连接

命令的别名

  • 方式一
    • cd ~进入用户目录
    • vi .bashrc编辑隐藏文件
    • alias la='ls -a'添加自定义命令名=’原命令名’
    • source ~/.bashrc重新执行刚修改的初始化文件,使之立即生效
  • 方式二
    • alias la='ls -a'添加自定义命令名=’原命令名’

VI编辑器

  • 操作模式:esc退回到操作模式

  • 命令模式:按:,输入命令

  • 编辑模式

    • i, I
      • i 为『从目前光标所在处输入』
      • I 为『在目前所在行的第一个非空格符处开始输入』
    • a A
      • a 为『从目前光标所在的下一个字符处开始输入』
      • A 为『从光标所在行的最后一个字符处开始输入』
    • o O
      • o 为『在目前光标所在的下一行处输入新的一行』
      • O 为在目前光标所在处的上一行输入新的一行
    • s S
      • s 删除当前字符并插入
      • S删除当前行并插入
  • 全键盘操作

    • j下 k上 h左 l右
    • gg 光标移动到第一行第一列
    • GG光标移动到最后一行第一列
    • $行尾
    • 0行头
  • 命令

    • vi打开文件
    • i进入编辑模式
    • Esc退回到操作模式
    • :wq保存退出 :q!不保存退出
    • r不进入编辑模式,修改当前的字符
    • u撤销
    • ctrl+r反撤销(重做)
    • d{x}删除
      • dw删除一个字母(光标在单词的第一个字母上)
      • dd删除一行
      • d$删到行末尾
    • y{x}复制
      • yw复制一个单词
      • yy复制一行
      • y3y复制3行
      • y$复制到行尾
    • p粘贴
    • x剪切一个字符

建议安装:vim

安装方式:yum install vim

使用方式:

  • .bashrc中添加alias vi=’vim’

  • source .bashrc

压缩解压缩

tar 压缩解压缩软件,生成的文件 .tar为后续,tarball

-c创建一个新的压缩包

-t列出压缩包中的内容

-x解压

-f使用某个压缩文件

-v描述操作执行的过程

-C指定解压的文件目录

  • #解压
    tar -C abc  -xvf code.tar
    #压缩
    tar -cf code.tar dirs.txt HelloWorld.java
    # 查看
    tar -tf code.tar
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64



    ## grep

    grep[选项] 关键词 文件...

    grep --color

    可以修改.bashrc文件,添加 alias grep = 'grep --color'

    再source .bashrc

    例:

    `grep --color h ./helloworld `从当前目录的helloworld文件名中的文件里寻找有h关键字的行匹配

    `find /proc/meminfo | xargs grep --color "^[S|s]"`

    可以使用参数 `-v`代表仅输出没有匹配的行

    ## 正则表达式

    $行结尾

    ^d单词的边界

    ^行的开始

    []多个选一个,|表示或者

    `.`任意字符

    `*`出现任何次

    `[0-9]`数字

    `\`转义

    ## find 查找

    `find路径 -name 表达式`

    `?`一个字符

    `*`任意字符

    `[]`任何一个 `[H|d] 以H或者d开头的文件`

    - [a-z] 小写字母
    - [A-Z] 大写字母
    - [a-Z] 大小写字母
    - [0-9] 数字

    `find 路径 -mtime 数字` 按修改时间查找

    `find 路径 -type 类型符号` 按类型查找

    ```bash
    1) f:普通文件,如文本文件,可执行文件
    2) d:目录
    3) l:软链接文件
    4) c:字符设备,如终端,磁带机等
    5) b:块设备,如光盘,硬盘等
1
2
3
4
5
6
7
8
9
10
11
12
13
find . -name "hello*" -exec ls -l {} \;	
find . -name "*.java" -exec grep --color class {} \;
find . -name "*.java" -exec rm -rf {} \;
# -exec 命令区 \;
# {} 表示查询结果

# 将搜索的结果作为参数传入 xargs后的命令中
find . -name "*.log" | xargs ls -l
find . -name "*.log" | xargs grep --color bin
# find . -name "*.log"
# grep --color bin install.log

#xargs 命令的作用将前序的执行结果作为参数传给 后序的命令

管道:把前一个命令的结果作为输入,给到下一个命令执行

find / -name '*a*b*'|grep --color ab

1
2
3
4
5
6
7
8
9
10
[root@lucas ~]# ls / | grep bin
bin
sbin
[root@lucas ~]# history | grep mv
118 mv HelloWorld.java app
121 mv app/HelloWorld.java app/HelloWorld.class
123 mv app/HelloWorld.class app/HelloWorld1.class
127 mv com app
130 mv app/com .
380 history | grep mv

用户管理

新建用户:useradd 用户名

切换用户:su 用户名

:删除用户userdel 用户名

设置用户密码:passwd 用户名

  • 用户密码在 /etc/shadow

:查看用户各种idid 用户名

usermod

  • 修改用户名
    • uesrmod -l 新的用户名 旧的用户名
  • 修改用户组
    • 修改主组名
      • usermod -g 新的用户组 用户名
    • 修改附属组
      • usermod -G 附属组名1 用户名
      • usermod -G 附属组名1,附属组名2 .。。。用户名

用户组管理

新建用户组:groupadd 新用户组名

查看用户组信息:cat /etc/group

删除组:groupdel 用户组名

查看用户的组的信息:groups 用户名

修改:groupmod -n 新的组名 旧的组名

  • -n <新群组名称>  设置欲使用的群组名称。

文件基本属性

通过ls -l可以看到文件的属性,包括文件类型和可执行权限等

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
文件类型:
1) f:普通文件,如文本文件,可执行文件
2) d:目录
3) l:软链接文件
4) c:字符设备,如终端,磁带机等
5) b:块设备,如光盘,硬盘等
可执行权限:
r :4 read 可读
w : 2 write 可写
x : 1 execute 可执行
chmod
chmod u+x index.html 给拥有者添加可执行权限
chmod u-x index.html 去除拥有者的可执行权限
chmod u=wrx,g=wx,o=x index.html 这都看不懂?
u:用户,文件的所有者
g:同组用户
o:其他
a:所有,系统默认
属主和属组

更改文件属性

1、chgrp:更改文件属组

语法:chgrp [-R] 属组名 文件名

参数选项:

  • -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。

2、chown:更改文件拥有者,也可以同时更改文件属组

1
2
chown [–R] 拥有者名 文件名
chown [-R] 拥有者名:属组名 文件名

软件安装方式

yum {install | remove | update} 拥有软件仓库,可以自动获取软件,自动安装软件的依赖包

rpm {-ivh | -e} 仅安装.rpm文件,需要用户自行安装相关依赖包

service

service 服务的名字 操作

service network restart

服务有: network 、 iptables、mysql 、sshd

操作: start(启动) stop(关闭) restart(重启) status(状态)

服务器的搭建

注意:
本教程首先得在VMware Workstation上安装好Linux的发行版CentOS环境
具体安装教程在上一级目录的 “linux” 笔记中,安装完毕后,在linux下测试
ping baidu.com ,网络畅通后才可继续本教程

安装”lrzsz”
作用:可以将本地文件直接上传到Linux的目录中
安装命令:yum -y install lrzsz

JDK

​ 1.将所需文件(jdk-8u171-linux-i586.tar.gz)上传至Linux目录下
​ rz
​ 2.创建文件夹
​ mkdir /opt/jdk
​ 3.解压到jdk目录下
​ tar -C /opt/jdk -zxvf jdk-8u171-linux-i586.tar.gz
​ 进入jdk下的/opt/jdk/jdk1.8.0_171
​ 执行[mv * ..]将所有文件放到上一层目录,这里也可以不如此做,
​ 后面注意路径问题就行了
​ 4.配置环境变量
​ vi /etc/profile
​ 在文件最后添加
​ JAVA_HOME=/opt/jdk
​ JRE_HOME=/opt/jdk/jre
​ PATH=$JAVA_HOME/bin:$PATH
​ export JAVA_HOME PATH JRE_HOME
​ 5.使之生效
​ source /etc/profile
​ 6.查看是否配置成功
​ java -version
​ javac -version
​ 两个命令都有输出,则配置成功,提示Command not found则配置失败

nginx

​ 1.在 /etc/yum.repos.d 目录下创建文件nginx.repo
​ 2.插入如下代码
​ [nginx]
​ name=nginx repo
​ baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
​ gpgcheck=0
​ enabled=1
​ 3.安装nginx
​ yum -y install nginx
​ 4.启动nginx
​ nginx
​ 注:
​ nginx 启动
​ nginx -s stop 停止
​ nginx -s reload 重新加载
​ 5.Linux上测试是否安装成功
​ curl localhost
​ 出现ngix的欢迎界面的html代码,则说明安装成功
​ 6.想要在电脑上查看是否安装成功,需要先停止防火墙
​ service iptables stop
​ 然后电脑输入linux的ip地址就可以访问欢迎界面,
​ 这里可以不加端口号80,浏览器会自动识别
配置nginx
​ 1.修改nginx的配置文件
​ vi nginx.conf
​ 将
​ server{
​ listen 8000;
​ server_name 192.168.60.138;
​ location /{
​ root /opt/upload/;
​ index index.html index.htm;
​ }
}
放入最后花括号之前
2.重启nginx
nginx -s stop
nginx
​ 2.导入文件
​ 3.开放8000端口
​ vi /etc/sysconfig/iptables
​ 添加:
​ -A INPUT -m state –state NEW -m tcp -p tcp –dport 8000 -j ACCEPT
​ 4.重启防火墙
​ service iptables restart
​ 5.看一下8000端口是否开放
​ iptables -nL
​ 6.先访问ip地址+80端口,确认nginx已开启,
​ 192.168.60.138:80
​ 再访问ip地址+8000端口,出现404证明端口已开放
​ 192.168.60.138:8000
​ 再访问ip地址+8000端口+文件路径+文件名
http://192.168.60.138:8000/picture.jpg

tomcat

​ 1.创建文件夹
​ mkdir /opt/tomcat
​ 2.解压tomcat文件(apache-tomcat-8.5.31.tar.gz)
​ tar -C /opt/tomcat/ -zxvf apache-tomcat-8.5.31.tar.gz
​ 3.进入/opt/tomcat/apache-tomcat-8.5.31目录
​ mv * ..
​ 移动后,空的目录可以删除哟
​ 4.启动tomcat
​ 执行命令(注意当前你的位置)
​ ./bin/startup.sh
​ 注:
​ 查看日志: tail -f ./logs/catalina.out
​ 关闭: ./bin/shutdown.sh
​ 启动并查看日志: ./bin/startup.sh & tail -f logs/catalina.out

开放端口

​ 因为linux的安全原因,可以需要将防火墙开启,后果就是无法通过ip+端口访问

解决方式:
    方式一:
        1.开放端口
            iptables -A INPUT -p tcp --dport=8080 -j ACCEPT
        2.保存规则
            service iptables save
        3.查看当前的规则
            iptables -nL
        4.修改规则后,重启iptables服务
            service iptables restart
    方式二(推荐):
        1.编辑文件
            vi /etc/sysconfig/iptables文件
        2.添加端口号(这行里面有,直接yy复制,p粘贴,修改自己需要的
            端口号就行,这里nginx是80端口,tomcat是8080端口,所以
            添加两行,后面增加端口,也是同理放行)
            -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
        3.重启
            service iptables restart
        4.测试是否成功
            ip地址+8080端口号
            例:http://192.168.0.189:8080/
            出现tomcat的欢迎界面,即成功

mysql在线安装

​ 1.安装前置命令包
​ yum -y install wget
​ 2.查看当前环境上是否安装了mysql
​ rpm -qa | grep mysql
​ 会有一个是内置的其他软件依赖的,不要去卸载
​ 3.如果安装过mysql可以先卸载以前的老版本
​ rpm -e mysql
​ rpm -e –nodeps mysql版本名称(强力删除)
​ 4.安装命令
​ wget http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm
​ rpm -ivh mysql-community-release-el6-5.noarch.rpm
​ yum install mysql-community-server
​ 上面的安装下载太慢了,放弃,我选择离线安装,后面的步骤未测试,但别人测试过了,可行

5.启动服务
service mysqld start
6.修改root密码
mysqladmin -uroot password ‘root123’
7.给root授权远程登录
使用控制台登陆mysql,执行命令开启远程访问权限
mysql -uroot -p
GRANT ALL PRIVILEGES ON . TO ‘root‘@’%’ IDENTIFIED BY ‘root123’;
flush privileges;
8.开放3306端口(方法见”自定义开放端口”的方式二)

mysql离线安装

​ 1.上传mysql的安装包
​ (MySQL-5.6.46-1.el6.i686.rpm-bundle.tar),
​ 并解压到/opt/mysql目录下
​ tar -C mysql -xvf MySQL-5.6.46-1.el6.i686.rpm-bundle.tar
​ 2.查看是否有mysql的安装
​ rpm -qa|grep “mysql”
​ 3.先安装兼容包,保证其他软件不挂
​ yum -y install MySQL-shared-compat-5.6.46-1.el6.i686.rpm
​ 4.卸载mysql-libs
​ yum -y remove mysql-libs
​ 5.安装server
​ yum -y install MySQL-server-5.6.46-1.el6.i686.rpm
​ 6.安装client
​ yum install MySQL-client-5.6.46-1.el6.i686.rpm
​ 7.一些配置
​ 执行安装数据库的命令
​ mysql_install_db –user=mysql –ldata=/var/lib/mysql
​ 启动
​ mysql mysqld –user=mysql
​ 配置mysql的root密码,随机密码在 ~/.mysql_secret中
​ mysqladmin -uroot -p{随机密码} password “root123”
​ 博客:https://blog.csdn.net/u010096371/article/details/51725895
​ 8.开放3306端口
​ 编辑/etc/sysconfig/iptables
​ service iptables restart
​ 9.给root授权远程登录
​ 使用控制台登陆mysql
​ mysql -uroot -p
​ 执行命令开启远程访问权限
​ GRANT ALL PRIVILEGES ON . TO ‘root‘@’%’ IDENTIFIED BY ‘root123’;
​ flush privileges;
​ exit
​ 重启mysql
​ service mysqld restart
​ 10.在Windows下用navicat访问数据库,测试是否成功

mysql安装三

​ 上面两种都太慢,我选择
​ yum install -y mysql mysql-server
​ 安装完成后,启动服务…和上面一样的步骤

最后测试是否成功
1.将项目导成warbao,放入webapps下面
2.关闭tomcat再打开
关闭:./bin/shutdown.sh
启动并查看日志: ./bin/startup.sh & tail -f logs/catalina.out
注意:自己的当前路径

mysql安装四

上面三种都太菜,我选择第四种,没测试过

  • yum上mysql的资源有问题,所以不能仅仅之用yum。在使用yum之前还需要用其他命令获取mysql社区版

  • cd /tmp
    wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm  
    rpm -ivh mysql-community-release-el7-5.noarch.rpm  
     
    
    1
    2
    3
    4
    5

    - 接着就可以通过yum安装了:

    - ```bash
    yum install mysql mysql-server mysql-devel -y
  • 以上只是安装,执行如下命令才能启动mysql服务器:

    • systemctl start mysql.service
  • 安装后会自动启动,启动后会占用3306端口。 使用如下命令查看3306端口是否启动,如果启动了则表示mysql处于运行状态。

    • netstat -anp|grep 3306

小结:

各软件端口号:

  • tomcat:8080
    nginx:80
    mysql:3306
    配置nginx监听端口:8000

Nginx

作用

  • 反向代理

  • 动静分离

    • #实现方式
      在locaction下面添加一个新的location:
       
              location ~\.(css|js|png)$ {
                  root C:/Users/X7TI/Downloads/tomcat_8111/webapps/ROOT;
          }
      
      这表示所有的css js png访问都由nginx来做,访问的地址是
      C:/Users/X7TI/Downloads/tomcat_8111/webapps/ROOT
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28

      - 负载均衡

      - session共享

      http服务器,静态资源服务器+反向代理,负载均衡

      ng+tomcat集群,服务器横向的扩展

      步骤:

      - 新建一个项目,在jsp文件里`<%=request.getLocalPort()%>`打印当前项目端口,便于最后测试是否nginx部署成功,将项目导成war包,导入linux的tomcat的webapps中,然后开启tomcat呗,这个就默认的8080端口吧

      - 服务器再开一个tomcat(模拟,实际情况是新开一个服务器,新开一个tomcat),内容和另一个tomcat一样,直接copy就行了

      - 修改tomcat文件里的conf/server.xml文件,将端口设为8081

      - `vi /opt/tomcat/conf/server.xml`

      - ```bash
      #找到下面的几段,前面和后面的修改是为了和另一个tomcat的端口不冲突,因为我的修改是在一个服务器运行两个tomcat,中间的才是真正的端口修改
      <Server port="8006" shutdown="SHUTDOWN">
      ...
      <Connector port="8081" protocol="HTTP/1.1"
      connectionTimeout="20000"
      redirectPort="8443" />
      ...
      <Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />
  • bin/startup.sh在tomcat目录下,直接启动新开的tomcat

  • 开房8081端口 vi /etc/sysconfig/iptables

  • 重启防火墙 service iptables restart

  • 配置nginx

1
2
3
4
5
6
7
8
9
10
11
12
13
upstream  netitcast.com {  #服务器集群名字	
server 127.0.0.1:8081 weight=1;#服务器配置 weight是权重的意思,权重越大,分配的概率越大。
server 127.0.0.1:8080 weight=2;
}
server{
listen 80;#监听80端口,可以改成其他端口
server_name 192.168.60.234;#你的虚拟机ip便于外部访问

location / {
proxy_pass http://netitcast.com; # 代理转发
proxy_redirect default;
}
}
  • 重新加载配置
    • nginx -s reload
  • 外部访问
    • 192.168.60.109/greeting观察端口变化

Maven

Linux下的搭建

  • 首先得安装wget(没有的情况下)

  • yum -y install wget

  • 在网址http://maven.apache.org/download.cgi中找到Link下的maven文件链接,右键复制,有bin的

  • 在linux下安装

    • wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.2/binaries/apache-maven-3.6.2-bin.tar.gz
  • 解压

    • tar -xzvf apache-maven-3.6.2-bin.tar.gz解压到当前目录
  • 我个人将解压后的apache-maven-3.6.2文件夹下的所有内容,使用mv * ..移动到上一级目录了

  • 配置环境变量

    • vi /etc/profile

    • MAVEN_HOME=/opt/maven
      PATH=$MAVEN_HOME/bin:$PATH
      export MAVEN_HOME
      
      1
      2
      3

      - 修改/opt/maven/conf/settings.xml文件,在158行左右会看见</mirros>,在其上面添加,添加的内容在`https://maven.aliyun.com/mvn/view`点击右上角的使用指南,往下拉就能看见

      ... 注意:在这个标签是配置maven文件的存放目录 <localRepository>D:\UserData\repo</localRepository> .... 注意:下面的是配置下载路径,从阿里下载 <mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> </mirror>
      1
      2
      3
      4
      5
      6
      7
      8
      9

      - 使用`mvn -version`来测试一下

      #### Windows下的搭建

      1)下载 http://maven.apache.org/download.cgi 并解压到合适的目录,有bin的

      2)配置环境变量

  • 新增系统变量
    变量名:MAVEN_HOME
    变量值:maven安装目录,例:F:\maven\apache-maven-3.6.2

  • 修改path,加入%MAVEN_HOME%\bin

    1
    2
    3
    4
    5
    6
    7

    3) 测试 `mvn -version`

    4) 修改配置文件

    - 修改F:\maven\apache-maven-3.6.2\conf下的settings.xml文件,将53行的 <localRepository>/path/to/local/repo</localRepository>复制下来,将中间的目录修改为自己想要的存放目录,在</mirrors>上添加

    aliyunmaven * 阿里云公共仓库 https://maven.aliyun.com/repository/public ```