一:linux基本命令

linux分为3类:
1、Redhat系,主要有Redhat、Centos、Fedora等,其中Centos系统是很多服务器用户选择的系统;
2、Debian系,主要有Debian、Ubuntu、Mint等,这个系还有其他一些衍生版本的系统;
3、其他系统,例如Gentoo、Arch Linux、LFS等。

1、安装好桌面版linux后去掉桌面显示黑窗口

右键桌面,选择open in terminal;
设置启动时就显示黑窗口:
修改配置文件:vim /etc/inittab,其中3代表黑窗口模式,5代表桌面模式;把5改为3即可;重启:reboot

2、重启系统

reboot              #直接重启;
shutdown -r now     #立刻重启(仅限root用户)
shutdown -r 10      #10分钟后重启(仅限root用户)
shutdown -r 20:35   #在指定时间重启(仅限root用户)

3、关机

Halt             #立刻关机
Poweroff         #强制立刻关机
Shutdown -h now  #立刻关机(仅限root用户)
Shutdown -r 10   #10分钟后关机

4、关闭/开启 防火墙

chkconfig iptables off      #永久关闭,重启后不会复原;开启防火墙:chkconfig iptables on
service iptables stop       #暂时关闭,重启后复原;        开启防火墙:service iptables start
systemctl start firewalld   #centos7开启防火墙
systemctl stop firewalld   #centos7关闭防火墙
systemctl status firewalld  #centos7查看防火墙状态
systemctl disable firewalld #centos7开机禁用防火墙
systemctl enable firewalld  #centos7开机起用防火墙
# 注意,生产环境只能放开某个端口,不能直接禁用防火墙;在开启防火墙的状态下,执行如下命令,放开9200端口:
firewall-cmd --zone=public --add-port=9200/tcp --permanent

5、显示隐藏文件

ll -a

6、操作文件快键键

vi 一个文件后,还没有敲i之前

跳到文件最后一行:$  回车   或:G 回车
删除一整行:dd
删除5行:5dd
复制当前行:yy
粘贴:p
复制当前行附近的3行:3yy
跳到文件第一行:gg回车
显示当前行号:nu
显示所有行号:set nu
一次性显示文件所有内容:cat a.txt;
翻页查看文件:more a.txt    #空格:下一页   b:上一页   q:退出;
             less a.txt      #空格:下一页   b:上一页   q:退出  分别敲上下箭头可以一行一行翻页;
查看文件末尾N行:tail  -10  a.txt  #显示末尾10行的内容
              tail  -f   a.txt    #动态刷新文件,一般用来查看日志
查看文件头部N行:head  -10 a.txt  #查看文件前10行内容
搜索关键字:/  关键字  回车  不断敲n会依次向下查询剩余的该关键字(N会向上查找)

7、复制

cp a.txt /home/hadoop/a.txt  # 直接复制

cp a.txt /home/hadoop/         # 直接复制(与上边效果一样)

cp   a.txt   b.txt    /usr/local/   #同时复制多个文件到指定目录;

cp a.txt  /home/hadoop/b.txt   #复制后重命名

8、查看进程

比如查看redis进程,可以使用

# 根据名字查看对应的进程
 ps  aux|grep  redis
# 根据端口号查看进程号
netstat -lntp|grep 8080

9、删除

Rm -rf  a.txt  没有a.txt的话不会提醒(删除文件夹的话用该命令,递归删除)
Rm  -f  a.txt   没有a.txt的话会提醒
Rm   – rf  *  删除全部文件(慎重使用)

10、时间

查看系统时间  date
修改系统时间 date -s "2008-08-08 12:00:00", 修改完后,记得执行clock -w,把系统时间写入CMO

11、创建文件/文件夹

#创建多级文件夹
mkdir -p /usr/local/es
#创建文件夹:
mkdir   aaa/bbb/ccc
#创建文件:
touch a.text
#创建文件方式二:
echo 2 >myid   #创建myid文件,并且将数字2写入该文件

12、赋予文件权限

chmod u+x start-all.sh  或者  chmod  777  start-all.sh

13、修改文件/文件夹名字

mv   aaa  bbb

14、压缩与解压

#压缩文件:
gzip a.txt
#解压文件:
tar -zxvf  aaa.tar.gz
tar  -xvf   bbb.tar
     xz   -d  ccc.xz
# 解压到指定目录
tar zxvf /source/kernel.tgz -C /usr/local

# 将整个/home/www/images 目录下的文件全部打包为 /home/www/images.tar
tar -cvf /home/www/images.tar /home/www/images #← 仅打包,不压缩
tar -zcvf /home/www/images.tar.gz /home/www/images #← 打包后,以gzip压缩

15、服务相关

service --status-all        #显示系统所有的后台进程
service network status  #查看指定服务进程(查看mysql进程:service mysql  status)
service network start    #手动开启指定服务
service network stop     #停止指定服务的进程
service network restart  #重启指定服务进程

16、查看当前用户

whoami

17、查看主机名

hostname

18、查看硬盘信息

#查看硬盘大小:
fdisk -l |grep Disk
#查看硬盘使用率:
df -hl

df -i

查看当前目录下各个文件夹大小
du -h -x --max-depth=1

19、将sql脚本导入到数据库里

在linux下将数据库文件user.sql导入到数据库mydb(用户名:zhangsan 密码:123456)中的命令是:
mysql -u用户名 -p密码 数据库名 < 数据库名.sql
即:mysql -uzhangsan -p123456 mydb <user.sql

20、查找文件里关键字的个数

grep -o 'haha' file1.txt  | wc -l    # wc命令:word count

21、查看ip

centos7之前:ifconfig
centos7:   ip addr

22、查看端口占用

netstat -tunlp|grep 18191
# 根据端口号查看进程号
netstat -lntp|grep 8080

23、添加新用户

useradd oracleuser
passwd oracleuser

给新用户赋root权限(/etc/sudoers去掉Allows people in …前边的注释)
在这里插入图片描述

usermod -g root oracleuser

24、查看centos版本

lsb_release -a 
#没有该命令的话,安装一下
yum install -y redhat-lsb

25、查看java安装路径

#使用如下命令的前提是配置了环境变量
echo $JAVA_HOME

which Java是无法定位到Java的安装路径的,只能定位到执行路径;whereis Java也无法定位,只能展示一部分的Java路径

which java
whereis java

在这里插入图片描述

26、查看端口是否被占用

#查看8081端口是否被占用
netstat -npl|grep 8081
# 查看8081端口占用的进程号。然后可以把进程号kill掉
netstat -lntp|grep 8081

在这里插入图片描述

27、查看刚敲过的历史命令

history

28、配置jdk

将解压后的jdk复制到/usr/local目录下,修改名字为jdk18(由于本人下载的1.8版本,所以大家根据自己的实际情况修改文件夹名字),然后配置jdk环境变量:
vi /etc/profile
添加如下内容即可(加到最下边):

export JAVA_HOME=/usr/local/jdk18
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin

如果编辑完profile文件,且执行完source /etc/profile后,所有命令都不能用了,说明配置的有问题,使用如下命令来临时执行其他命令:

export PATH=$PATH:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

也可以直接一条命令安装好jdk:

yum -y install fontconfig java-11-openjdk

29、更新yum命令

yum update

30 linux机器之间传递文件

机器A传递test.txt到机器B,在机器B里执行如下命令

# root是A机器用户名、ip是A机器地址
scp root@ip:/opt/usr/test.txt ./

两台机器配置主机名hostname名称分别是node1、node2

# 机器1配置主机名为node1
hostnamectl set-hostname node1
# 机器2配置主机名为node2
hostnamectl set-hostname node2

两台机器都配置主机名解析

#vim /etc/hosts 
192.168.18.101 node1
192.168.18.102 node2

配置好后,使用主机名即可相互间传递文件

# node1执行如下命令,传递文件到node2
scp /etc/kubernetes/admin.conf node2:/etc/kubernetes/admin.conf
## node2执行如下命令,传递文件到node1
scp /etc/kubernetes/admin.conf node1:/etc/kubernetes/admin.conf

31 查询本机与其他服务器连接个数

# 本机与其他所有IP连接个数
netstat -tun|awk '{print $5}' |cut -d : -f1|sort|uniq -c|sort -n  
# 本机与远程IP连接状态(建立连接、等待、监听、关闭...)
netstat -ant

32 查看年轻代、老年代等大小

jps
jstat -gcutil 1254118

33 查看内存大小

free -h
free -m

34 在一个文件里搜索关键字

grep 关键字 文件名

# 在out.log文件里搜索关键字“删除操作”
grep 删除操作  out.log

二:linux配置介绍及修改配置

1、解决linux无法联网的问题

首先执行如下命令判断是否能联网:

ping www.baidu.com  

ping不通的话说明当前linux不能联网,需做如下配置

vim /etc/sysconfig/network-scripts/ifcfg-eth0,编辑该文件如下:

GATEWAY=192.168.66.2  #前三个字段与linux地址一致,最后一个值是0-255随便写,不与本局域网地址冲突就行;

DNS1=211.167.230.200  #DNS1是本地能联网的DNS(右键桌面右下角的网络,网络共享中心,点击当前连接的网络,点击详细信息,找到IP4 DNS服务器后的地址即可)

2、解决非root用户使用sudo命令报错问题

#比如用户zhangsan使用sudo命令创建test文件夹
sudo mkdir test
#此时时报错如下:
"不在 sudoers 文件中。此事将被报告。"
#解决方法:
#切换到root用户下,对/etc/sudoers文件添加如下一行即可
zhangsan  ALL=(ALL)     ALL

3、配置免密登录其他机器时报错

3.1、linux配置免密登录其他机器

ssh-keygen 
# 执行完上边的命令后, 敲三次回车,然后依次执行下边三条语句即可
# 其中maltose01、maltose02、maltose03分别是其他机器的主机名
ssh-copy-id maltose01; ssh-copy-id maltose02; ssh-copy-id maltose03

远程在其他系统创建文件:

ssh maltose02 mkdir /root/haha;

远程启动另一台机器的zookeeper:

# source会把另一台机器要执行的命令与当前命令作为同一级,不加source的话,会认为在另一台机器执行的命令是当前命令的子进程,执行不成功;
ssh maltose02  “source  /etc/profile;/root/apps/zookeeper/bin/zkServer.sh start”

3.2、配置免密登录其他机器:

ssh-copy-id maltose02  #想要免密登录主机名是maltose02的机器

报错:

ERROR: @    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
ERROR: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
ERROR: IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
ERROR: Someone could be eavesdropping on you right now (man-in-the-middle attack)!
ERROR: It is also possible that a host key has just been changed.
ERROR: The fingerprint for the ECDSA key sent by the remote host is
ERROR: SHA256:N1bfV8wCL0RUL42A5umPZxhovF4hxEeZC7IT6+ljzek.
ERROR: Please contact your system administrator.
ERROR: Add correct host key in /root/.ssh/known_hosts to get rid of this message.
ERROR: Offending ECDSA key in /root/.ssh/known_hosts:2
ERROR: ECDSA host key for maltose02 has changed and you have requested strict checking.
ERROR: Host key verification failed.

解决方法:

cd /root/.ssh;
vi   known_hosts;

将之前配置的maltose02的内容删除即可(删除下边红框里的内容)
在这里插入图片描述
重新执行免密配置命令

ssh-copy-id maltose02

4、修改本机ip

执行setup命令后出现如下界面
这里写图片描述
选择上边的第二项"网络配置"后弹出下边界面
这里写图片描述
选择上边的"设备配置"
这里写图片描述
选择上边的第一行后,选择"保存",回车后即可修改ip了;

5、修改ip方式二

vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes     #是否开机启用
BOOTPROTO=static   #ip地址设置为静态
IPADDR=192.168.0.101
NETMASK=255.255.255.0

6、修改ip方式三

ifconfig eth0 192.168.33.2 #只在本次回话有效,重启后失效;

7、添加用户组和用户

先创建组, 再创建用户:

1)创建 elasticsearch 用户组
[root@localhost ~]# groupadd elasticsearch
		
2)创建用户 maltose 并设置密码
[root@localhost ~]# useradd maltose 
[root@localhost ~]# passwd maltose 

3# 创建es文件夹,并修改owner为maltose 用户
mkdir -p /usr/local/es

4)用户maltose 添加到 elasticsearch 用户组
[root@localhost ~]# usermod -G elasticsearch maltose 
[root@localhost ~]# chown -R maltose /usr/local/es/elasticsearch-7.6.1

5)设置sudo权限
#为了让普通用户有更大的操作权限,我们一般都会给普通用户设置sudo权限,方便普通用户的操作
#三台机器使用root用户执行visudo命令然后为es用户添加权限
[root@localhost ~]# visudo

#在root ALL=(ALL) ALL 一行下面
#添加maltose 用户 如下:
maltose ALL=(ALL) ALL
			 
#添加成功保存后切换到maltose 用户操作

[root@localhost ~]# su maltose 
[maltose@localhost root]$

三 VmWare新建Centos虚拟机时配置固定IP

vmware新建虚拟机时配置固定IP

四 权限

4.1 su命令

su命令就是用于账户切换的系统命令,其来源英文单词:Switch User
语法:su [-] [用户名]

  • - 符号是可选的,表示是否在切换用户后加载环境变量(后续讲解),建议带上
  • 参数:用户名,表示要切换的用户,用户名也可以省略,省略表示切换到root
  • 切换用户后,可以通过exit命令退回上一个用户,也可以使用快捷键:ctrl + d
  • 使用普通用户,切换到其它用户需要输入密码,如切换到root用户
  • 使用root用户切换到其它用户,无需密码,可以直接切换

4.2 sudo命令

在我们得知root密码的时候,可以通过su命令切换到root得到最大权限。
但是我们不建议长期使用root用户,避免带来系统损坏。

我们可以使用sudo命令,为普通的命令授权,临时以root身份执行。

语法:sudo linux其他命令
在其它命令之前,带上sudo,即可为这一条命令临时赋予root授权

但是并不是所有的用户,都有权利使用sudo,我们需要为普通用户配置sudo认证

切换到root用户,执行visudo命令,会自动通过vi编辑器打开:/etc/sudoers
在文件的最后添加:

mlatose   ALL=(ALL)   NOPASSWD=ALL

用户名maltose。其中最后的NOPASSWD:ALL 表示使用sudo命令,无需输入密码。最后通过 wq 保存。

切换回普通用户maltose后,以后执行命令时,在命令前加上sudo,就是以root身份执行了。

4.3 用户与用户组

Linux系统中可以:

  • 配置多个用户
  • 配置多个用户组
  • 一个用户可以加入多个用户组中

在这里插入图片描述
Linux中关于权限的管控级别有2个级别,分别是:

  • 针对用户的权限控制
  • 针对用户组的权限控制

比如,针对某文件,可以控制用户的权限,也可以控制用户组的权限。
所以,我们需要学习在Linux中进行用户、用户组管理的基础命令,为后面学习权限控制打下基础。

用户组管理
以下命令需root用户执行

创建用户组:groupadd 用户组名

删除用户组:groupdel 用户组名

为后续演示,我们创建一个maltose用户组:groupadd maltose

用户管理

以下命令需root用户执行

创建用户:useradd [-g -d] 用户名
选项:-g指定用户的组,不指定-g,会创建同名组并自动加入,指定-g,需要组已经存在,如已存在同名的用户组,则必须使用-g
选项:-d指定用户HOME路径,不指定,HOME目录默认在:/home/用户名

删除用户:userdel [-r] 用户名
选项:-r,删除用户的HOME目录,不使用-r,删除用户时,HOME目录保留

查看用户所属组:id [用户名]
参数:用户名,被查看的用户,如果不提供则查看自身

修改用户所属组:usermod -aG 用户组 用户名,将指定用户加入指定用户组

4.4 getent

使用getent命令,可以查看当前系统中有哪些用户
语法: getent passwd
在这里插入图片描述
共有7份信息,分别是:
用户名:密码(x):用户ID:组ID:描述信息(无用):HOME目录:执行终端(默认bash)

使用getent命令,同样可以查看当前系统中有哪些用户组
语法:getent group
在这里插入图片描述
包含3份信息,组名称:组认证(显示为x):组ID

4.5 权限控制

认知权限信息

通过ls -l 可以以列表形式查看内容,并显示权限细节
在这里插入图片描述
序号1,表示文件、文件夹的权限控制信息
序号2,表示文件、文件夹所属用户
序号3,表示文件、文件夹所属用户组

让我们来解析一下序号1,权限细节,权限细节总共分为10个槽位
在这里插入图片描述
举例:drwxr-xr-x,表示:(可分为四大块理解:d、rwx、r-x、r-x)

  • 这是一个文件夹,首字母d表示
  • 所属用户(图序号2)的权限是:有r有w有x,rwx
  • 所属用户组(图序号3)的权限是:有r无w有x,r-x (-表示无此权限)
  • 其它用户的权限是:有r无w有x,r-x

rwx
那么,rwx到底代表什么呢?

  • r表示读权限
  • w表示写权限
  • x表示执行权限

针对文件、文件夹的不同,rwx的含义有细微差别

  • r,针对文件可以查看文件内容。针对文件夹,可以查看文件夹内容,如ls命令
  • w,针对文件表示可以修改此文件。针对文件夹,可以在文件夹内:创建、删除、改名等操作
  • x,针对文件表示可以将文件作为程序执行。针对文件夹,表示可以更改工作目录到此文件夹,即cd进入

4.6 修改权限

chmod命令
我们可以使用chmod命令,修改文件、文件夹的权限信息。
注意,只有文件、文件夹的所属用户或root用户可以修改。
语法:chmod [-R] 权限 文件或文件夹
选项:-R,对文件夹内的全部内容应用同样的操作

示例:
chmod u=rwx,g=rx,o=x hello.txt ,将文件权限修改为:rwxr-x--x
其中:u表示user所属用户权限,g表示group组权限,o表示other其它用户权限

chmod -R u=rwx,g=rx,o=x test,将文件夹test以及文件夹内全部内容权限设置为:rwxr-x–x

除此之外,还有快捷写法:chmod 751 hello.txt,将hello.txt的权限修改为751
那么问题来了,751表示什么意思呢?

权限的数字序号
权限可以用3位数字来代表,第一位数字表示用户权限,第二位表示用户组权限,第三位表示其它用户权限。
数字的细节如下:r 记为4,w 记为2,x 记为1,可以有:
0:无任何权限, 即 ---
1:仅有x权限, 即 --x
2:仅有w权限 即 -w-
3:有w和x权限 即 -wx
4:仅有r权限 即 r--
5:有r和x权限 即 r-x
6:有r和w权限 即 rw-
7:有全部权限 即 rwx
所以751表示: rwx(7) r-x(5) --x(1)

案例:
将hello.txt的权限修改为: r-x--xr-x,数字序号为:chmod 515 hello.txt
将hello.txt的权限修改为: -wx-w-rw-,数字序号为:chmod 326 hello.txt

序号123代表的权限是:--x-w--wx

chown命令

使用chown命令,可以修改文件、文件夹的所属用户和用户组
普通用户无法修改所属为其它用户或组,所以此命令只适用于root用户执行

语法:chown [-R] [用户] [:] [用户组] 文件或文件夹

  • 选项,-R,同chmod,对文件夹内全部内容应用相同规则
  • 选项,用户,修改所属用户
  • 选项,用户组,修改所属用户组
  • :用于分隔用户和用户组

示例:
chown root hello.txt,将hello.txt所属用户修改为root
chown :root hello.txt,将hello.txt所属用户组修改为root
chown root:maltose hello.txt,将hello.txt所属用户修改为root,用户组修改为maltose
chown -R root test,将文件夹test的所属用户修改为root并对文件夹内全部内容应用同样规则

五 内网环境安装命令

5.1 内网安装docker以及docker里的镜像

内网下如何安装docker以及安装镜像

5.2 内网centos安装命令

电脑可以连接互联网的情况下,安装一些命令时,我们只需要执行yum install xxx即可,但是很多公司都是在内网环境下要安装一些命令,不能连接互联网,怎么解决?这里以安装unzip命令为例

在外网下载unzip二进制包:下载地址后
在这里插入图片描述
找到自己想下载的版本,即可下载(这里选择el7)
在这里插入图片描述
下载后上传到内网环境下的centos里,然后执行下边的命令安装即可

# 查看 unzip 是否被安装
rpm -qa | grep unzip

# 安装unzip:
rpm -ivh unzip-6.0-19.el7.x86_64.rpm

# 卸载
rpm -e unzip-6.0-19.el7.x86_64.rpm

RPM常用命令

RPM 有五种操作模式,分别为:安装、卸载、升级、查询和验证

  1. RPM 安装操作:
    rpm -i 需要安装的包文件名

  2. RPM 查询操作:
    rpm -q
    附加查询命令:

    • a 查询所有已经安装的包以下两个附加命令用于查询安装包的信息;
    • i 显示安装包的信息;
    • l 显示安装包中的所有文件被安装到哪些目录下;
    • s 显示安装版中的所有文件状态及被安装到哪些目录下;以下两个附加命令用于指定需要查询的是安装包还是已安装后的文件;
    • p 查询的是安装包的信息;
    • f 查询的是已安装的某文件信息;
  3. RPM 卸载操作:
    rpm -e 需要卸载的安装包

  4. RPM 升级操作
    rpm -U 需要升级的包

  5. RPM 验证操作:
    rpm -V 需要验证的包

  6. 其它命令
    –force 强制操作 如强制安装删除等;
    –requires 显示该包的依赖关系;
    –nodeps 忽略依赖关系并继续操作;
    例如:rpm -ivh zip-3.0-1.el6_7.1.x86_64.rpm --force --nodeps

六 centos中java启动脚本

新建startUp.sh文件,内容如下

nohup  java -jar  -Xms100m -Xmx200m -XX:+UseG1GC -Dfile.encoding=UTF-8  demo.jar  --spring.config=application-test.yml > log.out &

启动脚本命令:sh startUp.sh

Logo

更多推荐