Linux基础,阿里云服务器实战

Linux

开关机命令

命令 解释
sync 将内存全部同步到硬盘中,一般在关机之前使用
shutdown 一分钟后关机
shutdown -h 10 10分钟之后关机
shutdown -h now 立马关机
poweroff 立马关机
shutdown -h 20:25 在20:25关机
shutdown -r now 立马重启
reboot 立马重启==shutdown -h now
halt 关闭系统==立马关机

常用命令

目录管理

命令 解释
cd 切换目录(绝对路径以/开头)
./ 当前目录
cd … 返回上一级(中间由空格!)
ls 列出目录
-a(参数) 查看所有文件包括隐藏
-l(参数) 列出所有文件,包含属性和权限(没有隐藏)
~ 当前用户目录(一般是root目录)
pwd 查看当前所在位置的绝对路径
mkdir 创建目录(文件夹)
-p 递归
mkdir -p 递归创建目录:(mkdir -p /test/test1/test2)
rmdir 删除目录
cp 复制 语法(cp 文件 目录)
rm 移除文件或者目录
-f 忽略不存在的文件,强制删除,不会出现警告
-r 递归删除目录,删除全部!
-i 互动时,删除询问是否删除
mv 移动文件,剪切,重命名(mv name1 name2)
-u 只替换已经更新过的文件
tree 查看目录树状结构

文件内涵(理论)

drwxr-xr-x  2 root root  302 Sep  2 15:56 bin
drwxr-xr-x  2 root root  253 Sep  2 15:56 build
drwxr-xr-x  2 root root   78 Sep  2 15:56 cgi-bin
drwxr-xr-x  5 root root  119 Sep  2 15:56 conf
-rw-r--r--  1 root root    6 Sep  2 18:18 version_check.pl
-rw-r--r--  1 root root    4 Sep  2 15:56 version.pl
lrwxrwxrwx.   1 root root    7 May 11  2019 lib -> usr/lib

以上目录详情(ls -ll)

开头字母:

​ d:为文件目录

​ -:为文件

​ L:为连接文档(快捷方式)

​ b:为装置文件中可供储存的接口设备

​ c:为装置文件里面的串行端口设备,如鼠标键盘(一次读取装置)

后续每三个字母为一组

​ 其中 r:读 w:写 x:可执行 -:没有这个权限

Linux基础,阿里云服务器实战_第1张图片

例:

	lrwxrwxrwx.   1 root root    7 May 11  2019 lib -> usr/lib

l表示目标是快捷方式(链接Link),rwx表示root用户可以读、写、执行,第二个rwx是指所属组的用户可以读、写、执行,第三个rwx表示其他用户都可以读、写、执行,1表示有一个目标(如果是文件目录就会显示文件目录下有多少个目标),第一个root表示属主是谁,谁创建的,第二个root表示属组,该目标属于root组,7表示文件大小,May 11 2019表示创建时间,lib表示该目标的名称,因为是链接,所以会有->表示该链接指向那个文件

修改文件属性

命令 解析
chgrp [-R] 更改文件属组(-R表示递归)
chown [-R] 更改文件属主,也可以同时更改文件属组 ,语法:(属主名 文件名||属主名:属组名 文件名)
chmod [-R] 更改文件9个属性,

chmod [-R]命令详解:

我们在操作文件的时候经常会出现“你没有权限操作此文件”这样的问题

语法:chmod -R xyz 文件名 -R表示递归

各个权限可以用数字代替

r:4 w:2 x:1

可读不可写不可执行 r-- 4

可读可写可执行 rwx 7

例:chmod 777 文件名 赋予该文件属主、属组、其他用户全部权限

文件内容查看

Linux系统中使用一下命令来查看文件的内容:

  • cat 由第一行开始显示文件内容
  • tac 从最后一行开始显示(有没有发现cat和tac是倒着写的)
  • nl 显示的时候一并生成行号(小文件这个好用
  • more 一页一页的显示文件内容,空格是翻一页,回车是向下滚动(退出q
  • less与more类似,但是比more更好的是,它可以往前翻页(大文件这个好用
  • / 当你读取文件时想寻找当前位置之下的某个关键字,可以使用"/关键字"命令,关键字就会高亮
  • ? 当你读取文件时想寻找当前位置之上的某个关键字,可以使用"?关键字"命令,关键字就会高亮
  • N/n 执行/或者?命令时n是寻找下一个,N是寻找上一个
  • head 只看头几行
  • tail 只看尾几行

你可以使用man命令来查看各个命令的使用文档,如:man cp (全英文,不如百度去搜)

网络配置相关目录: /etc/sysconfig

默认网络配置文件: /etc/sysconfig/network-scripts/ifcfg-eth0 (CentOS7是这个,别的不一定)

查看ip:ifconfig

Linux链接的概念(扩展)

Linxu的链接分为两种:软连接和硬链接

硬链接:相当于动态备份,假设B是A的硬链接,那么他们两个指向了同一个文件,允许一个文件拥有多个路径,用户可以通过这种机制建立硬链接到一些重要的文件,防止误删

软连接:类似于快捷方式,删除源文件,快捷方式也使用不了了

命令 解释
ln 创建链接,语法(ln f1 f2):给文件f1创建一个硬链接,名字为f2
ln -s 创建软连接
touch 创建文件
echo 输入字符串,语法:(echo “输入的东西” >>文件名称) 例:(echo “test” >>f1)
-rw-r--r-- 2 root  root   0 Sep  4 12:00 f1   #文件源
-rw-r--r-- 2 root  root   0 Sep  4 12:00 f2	  #硬链接
lrwxrwxrwx 1 root  root   2 Sep  4 12:00 f3 -> f1	#软连接

VIM编辑器

基本上vi/vim分为三种模式,分别是:命令模式(Command mode),输入模式(Insert mode),底线命令模式(Last line mode),这三种模式的作用分别是:

命令模式:

​ 用户刚刚启动vi/vim,便进入了命令模式,

​ 此状态下敲击键盘动作会被vim识别为命令,而非输入字符,必须此时我们按下i,并不会输入一个 字符,而是被当成一个命令:

  • i切换到输入模式,以输入字符
  • x删除当前光标所在处的字符
  • :切换到底线命令模式,以在最低一行输入命令

输入模式:

​ 在命令模式下按i就可以进入输入模式

​ 在输入模式中,可以使用以下按键

  • ​ 回车键,换行
  • ​ del 删除键,删除光标后面一个字符
  • ​ esc键,退出输入模式
  • ​ insert键,切换光标为输入/替换模式,光标将变成竖线/下划线,REPLACE为替换模式模式

底线命令模式:

​ 在命令模式下按:进入底线命令模式

  • w 保存
  • q 退出
  • :set nu 给编辑器设置行号
  • :set nonu 取消行号

使用vim命令时,如果(vim 文件名)文件名存在,则修改文件内容,如果不存在则创建这个文件并显示文件内容

账号管理

简介

Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须先向系统管理员申请一个账号,然后以这个账号的身份进入系统

用户的账号一方面能帮助系统管理员对使用系统的用户进行跟踪,并控制他们对资源的访问,另一方面也可以帮助用户组织文件,并为用户提供安全性保护

每一个用户账号都有唯一一个用户名和各自的口令

实现用户账号的管理,要完成的工作主要有如下几个方面

  • 用户账号的增删改
  • 用户口令的管理
  • 用户组的管理

用户账号的管理

用户账号的管理工作主要涉及到用户账号的增删改

添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号,用户组,主目录和登录shell等资源

useradd 命令 添加用户

语法 :useradd -m 用户目录名

-m:表示自动创建这个用户的主目录

[root@iZ2zeip56cf5a8rhryxxmyZ home]# useradd -m wangjing
[root@iZ2zeip56cf5a8rhryxxmyZ home]# ls
git  redis  test.txt  wangjing  www

本质:在Linux中一切皆文件,这里的添加用户说白了就是在配置文件中写入用户的信息, 默认在 /etc/passwd 文件下

wangjing:x:1003:1003::/home/wangjing:/bin/bash

删除用户 userdel

语法:userdel -r 用户目录名

-r:删除目录时将他的目录页一并删除掉

[root@iZ2zeip56cf5a8rhryxxmyZ home]# userdel -r wangjing
[root@iZ2zeip56cf5a8rhryxxmyZ home]# ls
git  redis  test.txt  www

修改用户 usermod

语法 usermod 参数 修改内容 用户名

例:

usermod -d /home/test wangjing

修改完查看配置文件即可看到修改数据 /etc/passwd(文件!别用cd)

参数:

-c :指定一段注释性描述

-d :目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录 (/home/test)

-g :修改用户的gid,被改组需要存在

-aG :把用户追加到某些组中,没有组就创建组(G创建,a追加)

-m :使用者目录如不存在,则自动建立(和-d一起使用)

-s :Shell文件,指定用户的登录Shell

-u :修改用户的uid,uid必须唯一

-U(unlock) :解锁用户的密码

-l (login):修改用户的登录名称

-L (lock):修改用户的登录密码

-e :指定账户禁用的日期,格式YY-MM-DD

-f :用户密码过期多少天之后就禁用这个账号,0表示密码以过期就禁用,-1表示禁用此功能,默认-1

CentOS8官方参数:

参数 英文 解释
-c comment COMMENT GECOS字段的新值
-d home HOME_DIR 为用户帐户新建主目录
-e expiredate EXPIRE_DATE 设置帐户到期日期为EXPIRE_DATE
-f inactive INACTIVE 在过期后设置密码为非活动
-g gid GROUP 强制使用组作为新的主要组
-G groups GROUPS 补充组的新列表
-a append 将用户附加到-G选项中提到的补充组,而不将用户从其他组中移除
-h help 显示此帮助信息并退出
-l login NEW_LOGIN 登录名的新值
-L lock 锁定用户帐户
-m move-home 将主目录的内容移动到新位置(仅与-d一起使用)
-o non-unique 允许使用重复的(非唯一的)UID
-p password PASSWORD 使用加密的密码作为新密码
-R root CHROOT_DIR 要chroot到的目录
-P prefix PREFIX_DIR 包含/etc/*文件的前缀目录
-s shell SHELL 用户帐户的新登录shell
-u uid UID 用户帐户的新UID
-U unlock 解锁用户帐户
-v add-subuids FIRST-LAST 添加下级uid的范围
-V del-subuids FIRST-LAST 删除下级uid的范围
-w add-subgids FIRST-LAST 添加从属gid的范围
-W del-subgids FIRST-LAST 删除从属gid的范围
-Z selinux-user SEUSER 用户帐户的新SELinux用户映射

注意:创建用户时候也可以设置这些,详情请另行百度!

切换用户

Linux基础,阿里云服务器实战_第2张图片

  1. 切换用户的命令为:su username
  2. 从普通用户切换到root用户,还可以使用命令:sudo su
  3. 在终端输入exit或logout或者使用快捷键ctrl+d,可以退回到原来的用户,ctrl+d就是执行exit
  4. 在切换用户时,如果想在切换用户之后使用新用户的工作环境,可以在su和username中间加个-,例如:【su -root】
  5. $表示普通用户
  6. #表示超级用户,也就时root用户

主机名

Linux基础,阿里云服务器实战_第3张图片

修改完毕之后需要重启

用户密码问题

通过root用户给其他用户设置密码

[root@wangjinchen home]# passwd wangjing
new password:
re password:

其他用户给自己设置密码:

[wangjing@wangjinchen ~]$ passwd 
Changing password for user wangjing.
Current password: 
New password: 

锁定用户

使用root用户对其他账号进行冻结

两种方式

passwd -l wangjing # 这个是将这个账户直接冻结
passwd -d wangjing # 这个是让账户失去密码,密码变为空,不能登录

将用户权限升级为root权限(扩展)


1、添加用户,首先用adduser命令添加一个普通用户,命令如下:
  #adduser tommy
  //添加一个名为tommy的用户
  #passwd tommy //修改密码
  Changing password for user tommy.
  New UNIX password: //在这里输入新密码
  Retype new UNIX password: //再次输入新密码
  passwd: all authentication tokens updated successfully.
2、赋予root权限
方法一: 修改 /etc/sudoers 文件,找到下面一行,把前面的注释(#)去掉
## Allows people in group wheel to run all commands
%wheel    ALL=(ALL)    ALL
然后修改用户,使其属于root组(wheel),命令如下:
#usermod -g root tommy
修改完毕,现在可以用tommy帐号登录,然后用命令 su - ,即可获得root权限进行操作。
方法二: 修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:
## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL
tommy   ALL=(ALL)     ALL
修改完毕,现在可以用tommy帐号登录,然后用命令 su - ,即可获得root权限进行操作。
方法三: 修改 /etc/passwd 文件,找到如下行,把用户ID修改为 0 ,如下所示:
tommy:x:500:500:tommy:/home/tommy:/bin/bash
修改后如下
tommy:x:0:500:tommy:/home/tommy:/bin/bash
保存,用tommy账户登录后,直接获取的就是root帐号的权限。
友情提醒:虽然方法三看上去简单方便,但一般不推荐使用,推荐使用方法二。

用户组管理

每一个用户都有一个用户组,系统可以对一个组中的所有用户进行统一管理,不同的Linux系统对用户组的规定有所不同,如Linux下的用户属于他同名的用户组,这个组在创建用户的同时创建

用户组的管理涉及用户组的添加删除修改,组的增加删除修改其实就是对/etc/group文件的更新

创建一个用户组

[root@wangjinchen home]# groupadd wj 
[root@wangjinchen home]# cat /etc/group
wj:x:1003:

使用-g (组id)参数可以给这个组自定义一个gid,否则他的gid就是自增1

-G给用户分配用户组

删除用户组

[root@wangjinchen home]# groupdel wj

修改用户组的权限信息和名字 groupmod

-g修改用户组id

-n修改用户组名字

[root@wangjinchen home]# groupmod -g 500 -n wj1 wj

用户如果想要切换用户组怎么办

# su wangjing
password : .........
$ newgrp root # 将这个用户的用户组修改为root组

扩展:文件的查看

/etc/passwd

root:x:0:0:root:/root:/bin/bash

用户名:口令(登录密码,不可见):用户标识号:用户组标识号:注释行描述:主目录:登录shell

这个文件中每一行都代表一个用户,我们可以从这里看出这个用户的主目录在哪,可以看到属于哪一个组

登录口令:把真正的加密后的用户口令存放在/etc/shadow文件中,保证密码的安全性

用户组的所有信息都存放在/etc/group文件中

磁盘管理

df(累出文件系统整体的磁盘使用量)du(检查磁盘空间使用量)

df -h以兆和G的形式显示磁盘

[root@wangjinchen ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        1.9G     0  1.9G   0% /dev
tmpfs           1.9G     0  1.9G   0% /dev/shm
tmpfs           1.9G  512K  1.9G   1% /run
tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/vda1        40G  6.0G   35G  15% /
tmpfs           379M     0  379M   0% /run/user/1002
tmpfs           379M     0  379M   0% /run/user/0

系统文件 多大 已用 剩余 已用% 挂载目录

du -a -h 查询所有文件(包括隐藏和子集目录文件)

[root@wangjinchen home]# du -a -h
4.0K	./www/.bash_logout
4.0K	./www/.bash_profile
4.0K	./www/.bashrc
4.0K	./www/.oracle_jre_usage/aa694b02fe91242e.timestamp
4.0K	./www/.oracle_jre_usage
16K		./www

进程管理

对于我们开发人员来说,其实Linux更多偏向于使用即可!

基本概念

1.Linux中,每一个程序都有自己的一个进程,每一个进程都有一个id

2.每一个进程都会有一个父进程

3.进程可以有两种存在方式:前台,后台

4.一般的服务是后台运行的,基本的程序都是前台运行的

命令

ps 查看当前系统中正在执行的各种进程的信息

ps -xx:

  • -a 显示当前终端运行的所有的进程信息(当前用户)
  • -u 以用户的信息显示进程
  • -x 显示后台运行进程的参数
#ps -aux 查看所有的进程
ps -aux|grep mysql
# |  在Linux种这个叫做管道符 A|B 就是将A的运行结果当成B的参数
# grep 查找文件中复合条件的字符串(过滤)

对于我们来说,这里目前只需要记住一个命令即可,ps -xx|grep 进程名字

ps -ef:可以查看父进程的信息

ps -ef|grep mysql #看父进程我们一般可以通过目录树结构查看
#进程树:
pstree -pu
	-p 显示父id
	-u 显示用户组
[root@wangjinchen /]# pstree
systemd─┬─AliYunDun───23*[{
     AliYunDun}]
        ├─AliYunDunUpdate───3*[{
     AliYunDunUpdate}]
        ├─BT-Panel───{
     BT-Panel}
        ├─BT-Task───7*[{
     BT-Task}]
        ├─NetworkManager───2*[{
     NetworkManager}]
        ├─2*[agetty]
        ├─aliyun-service───2*[{
     aliyun-service}]
        ├─atd
        ├─auditd─┬─sedispatch
        │        └─2*[{
     auditd}]
        ├─chronyd
        ├─crond
        ├─dbus-daemon
        ├─firewalld───{
     firewalld}
        ├─httpd───3*[httpd───63*[{
     httpd}]]
        ├─jsvc───jsvc───43*[{
     jsvc}]
        ├─lsmd
        ├─master─┬─pickup
        │        └─qmgr
        ├─mcelog
        ├─mysqld_safe───mysqld───23*[{
     mysqld}]
        ├─polkitd───5*[{
     polkitd}]
        ├─pure-ftpd
        ├─redis-server───4*[{
     redis-server}]
        ├─rngd───2*[{
     rngd}]
        ├─rsyslogd───2*[{
     rsyslogd}]
        ├─smartd
        ├─sshd───sshd───sshd───bash───pstree
        ├─sssd─┬─sssd_be
        │      └─sssd_nss
        ├─2*[systemd───(sd-pam)]
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-resolve
        ├─systemd-udevd
        └─tuned───3*[{
     tuned}]

结束进程:

kill -9 进程id

平时不推荐结束进程,但是我们java代码死循环了,可以选择结束进程

-9 参数表示强制结束该进程!

环境安装

安装软件一般有三种方式:

  • rpm
  • 解压缩
  • yum在线安装

JDK安装

我们开发java必须要的环境

1.下载jdk,去oracle官网下载

2.安装java环境

#检测当前系统是否存在java环境 java -version
#如果有的话需要先卸载
rpm -qa|grep jdk #检测jdk版本信息
rom -e --nodeps jdk_

#卸载完毕之后安装jdk
rpm -ivh rpm包
#配置环境变量

卸载jdk:

[root@localhost home]# rpm -qa|grep jdk
jdk1.8-1.8.0_261-fcs.x86_64
[root@localhost home]# rpm -e --nodeps jdk1.8-1.8.0_261-fcs.x86_64
[root@localhost home]# java -version
-bash: /usr/bin/java: 没有那个文件或目录

配置环境变量:

找到etc/java/下的jdk目录文件,复制目录名称

[root@localhost etc]#vim /etc/profile
#在最下面配置环境变量
JAVA_HOME=/usr/java/jdk1.8.0_261-amd64
CLASSPATH=%JAVA_HOME%/lib;%JAVA_HOME%/jre/lib
PATH=$JAVA_HOME%/bin;$JAVA_HOME%/jre/bin
export PATH CLASSPATH JAVA_HOME #这个是让系统识别变量

让这个配置文件生效!source /etc/profille

我感觉这个配置环境有问题,具体请百度!

发布项目

#开启防火墙
firewall-cmd --zone=public --add-port=9000/tcp --permanent
#重启防火墙
sysytemctl restart firewalld.service
#查看所有开启的端口,如果是阿里云,需要配置安全组
firewall-cmd --list-porst

TOMCAT安装

ssm war 就需要放到tomcat中运行

解压tomcat

tar -zxvf apache-tomcat-9.0.22.tar.gz

启动tomcat

#执行文件startup.sh
./startup.sh

访问项目需要打相对路径!

Docker(yum安装(在线安装!需要联网!))

docker官网:https://docs.docker.com/install/linux/docker-ce/centos

安装

1.检测Linux版本

[root@wangjinchen webapp]# cat /etc/redhat-release 
CentOS Linux release 8.1.1911 (Core) 

2.安装准备环境

yum -y install 包名 # yum install是安装命令,-y是所有提示都为y,也就是都yes
yum -y install gcc
yum -y install gcc-c++

3.清除以前的版本

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

4.清除版本之后,根据官方安装即可

最后特别鸣谢 哔哩哔哩up主:遇见狂神说

你可能感兴趣的:(Linux,linux)