黑白客 发表于 2021-3-19 16:50

linux服务器用户组,磁盘,进程管理以及项目发布讲解

linux服务器用户组,磁盘,进程管理以及项目发布讲解
用户组管理
磁盘管理
进程管理
环境安装
jdk安装

linux学习

## 用户组管理

> 组的增删 改 查 实际上就是对/etc/group文件的更新

> 创建一个用户组: groupadd

groupadd haixin

cat /etc/group

创建完成,查看可以看到一个组的id.这个id可以指定.不指定就是自增

groupadd -g 666 haixin2

> 删除用户组

groupdel haixin1

> 修改用户组的id和名字

groupmod -g 777 -n newhaixin haixin

> 用户要切换用户组

一般创建用户的时候就会给他分配到一个用户组

useradd -m -G 666 username

管理员登录到要切换的账号

#登录当前账户 haixin

$ newgrp root执行这个命令,成功则进入

> 拓展:文件的查看

/etc/passwd

展示每条内容为

用户名:口令(就是密码,这里不直接实现,用一个字母或者符号代替):用户标识号:组标识号:注释性描述:主目录:登录Shell

每一行都代表一个用户

口令:把真正的 加密后的用户口令字存放到/etc/shadow文件中

可以cat /etc/shadow 查看,但是都是加密过的

## 磁盘管理

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

df   (这个磁盘大小展示的是以字节为单位)

```bash
@haixin root]$ df
Filesystem   1K-blocks    Used Available Use% Mounted on
devtmpfs          877760       0    877760   0% /dev
tmpfs             888120       0    888120   0% /dev/shm
tmpfs             888120   528    887592   1% /run
tmpfs             888120       0    888120   0% /sys/fs/cgroup
/dev/vda1       41152812 61794483306965616% /
tmpfs             177628       0    177628   0% /run/user/0

```

df -h (这磁盘打下 size 是以m为单位)

```bash
$ df -h
Filesystem      SizeUsed Avail Use% Mounted on
devtmpfs      858M   0858M   0% /dev
tmpfs         868M   0868M   0% /dev/shm
tmpfs         868M528K867M   1% /run
tmpfs         868M   0868M   0% /sys/fs/cgroup
/dev/vda1      40G5.9G   32G16% /
tmpfs         174M   0174M   0% /run/user/0

```

du (检查磁盘空间的使用量,查看空间的具体使用)

cd /home

du



du -a (将子目录 以及隐藏目录也一并展示)

du -sm /*      检查根目录下每个目录所占用的用量

```bash
# du -sm /*
0        /bin
146        /boot
0        /dev
38        /etc
350        /home
0        /lib
0        /lib64
1        /lost+found
1        /media
1        /mnt
136        /opt
1        /patch
du: cannot access ‘/proc/31995/task/31995/fd/4’: No such file or directory
du: cannot access ‘/proc/31995/task/31995/fdinfo/4’: No such file or directory
du: cannot access ‘/proc/31995/fd/4’: No such file or directory
du: cannot access ‘/proc/31995/fdinfo/4’: No such file or directory
0        /proc
1        /root
1        /run
0        /sbin
1        /srv
0        /sys
77        /tmp
2346        /usr
473        /var
2309        /www

```

系统初期最大的就是我们的用户目录,因为很多文件和程序都在这里面

> Mac或者使用Linux挂载我们的一些本地磁盘或者文件!

mount 外部设备所在目录/mut/设备目录

卸载: umount -f [挂载位置] 强制卸载



除此之外,我们以后安装了jdk,也可以使用java的一些命令来查看

## 进程管理

**linux中一切皆文件(文件:读写执行,权限(用户,用户组),系统(磁盘,进程),)**

> 基本概念

1. 在linux中,每一个程序都是有自己的一个进程,每个进程都有一个id号
2. 每一个进程都有一个父进程
3. 进程可以有两种存在方式:前台进程和后台进程
4. 一般的话服务都是后台进程.一般的程序是前台进程

> 命令

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

ps -xx

- -a 显示当前终端所运行的所有进程

```bash
# ps
PID TTY          TIME CMD
32460 pts/0    00:00:00 bash
32530 pts/0    00:00:00 ps

```

- -u 以用户的信息显示进程
- -x显示后台运行程序的参数

```bash
#ps -aux 查看所有进程
ps -aux | grep mysql
# | 管道符, A|B 把A命令的结果作为输出来操作B命令
# grep 查找文件中符合条件的字符


# ps -aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         10.00.1517123512 ?      Ss   Mar10   1:28 /usr/li
root         20.00.0      0   0 ?      S    Mar10   0:00 [kthrea
root         40.00.0      0   0 ?      S<   Mar10   0:00 [kworke
root         60.00.0      0   0 ?      S    Mar10   0:01 [ksofti
root         70.00.0      0   0 ?      S    Mar10   0:01 [migrat
root         80.00.0      0   0 ?      S    Mar10   0:00 [rcu_bh
root         90.00.0      0   0 ?      S    Mar10   6:21 [rcu_sc
root      100.00.0      0   0 ?      S<   Mar10   0:00 [lru-ad
root      110.00.0      0   0 ?      S    Mar10   0:03 [watchd
root      120.00.0      0   0 ?      S    Mar10   0:02 [watchd
...


# ps -aux | grep mysql
root   264390.00.0 1134241632 ?      S    Mar10   0:00 /bin/sh /www/server/mysql/bin/mysqld_safe --datadir=/www/server/data --pid-file=/www/server/data/iZ8vb5yl5m390bo5rw0r8cZ.pid
mysql    270850.09.7 1104884 173224 ?      Sl   Mar10   5:13 /www/server/mysql/bin/mysqld --basedir=/www/server/mysql --datadir=/www/server/data --plugin-dir=/www/server/mysql/lib/plugin --user=mysql --log-error=iZ8vb5yl5m390bo5rw0r8cZ.err --open-files-limit=65535 --pid-file=/www/server/data/iZ8vb5yl5m390bo5rw0r8cZ.pid --socket=/tmp/mysql.sock --port=3306
root   326860.00.0 112816   972 pts/0    S+   10:42   0:00 grep --color=auto mysql

```

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

```bash
ps -ef | grep mysql # 看父进程我们一般可以通过目录数结构来查看
pstree -pu
-p 显示父id
-u 显示用户组

# ps -ef |grep mysql
root       354 324600 10:43 pts/0    00:00:00 grep --color=auto mysql
root   26439   10 Mar10 ?      00:00:00 /bin/sh /www/server/mysql/bin/mysqld_safe --datadir=/www/server/data --pid-file=/www/server/data/iZ8vb5yl5m390bo5rw0r8cZ.pid
mysql    27085 264390 Mar10 ?      00:05:13 /www/server/mysql/bin/mysqld --basedir=/www/server/mysql --datadir=/www/server/data --plugin-dir=/www/server/mysql/lib/plugin --user=mysql --log-error=iZ8vb5yl5m390bo5rw0r8cZ.err --open-files-limit=65535 --pid-file=/www/server/data/iZ8vb5yl5m390bo5rw0r8cZ.pid --socket=/tmp/mysql.sock --port=3306

# pstree -pu
systemd(1)─┬─AliYunDun(1072)─┬─{AliYunDun}(1073)
         │               ├─{AliYunDun}(1074)
         │               ├─{AliYunDun}(1086)
         │               ├─{AliYunDun}(1087)
         │               ├─{AliYunDun}(1088)
         │               ├─{AliYunDun}(1089)
         │               ├─{AliYunDun}(1090)
         │               ├─{AliYunDun}(1091)
         │               ├─{AliYunDun}(1092)
         │               ├─{AliYunDun}(1093)
         │               ├─{AliYunDun}(1094)
         │               ├─{AliYunDun}(1095)
         │               ├─{AliYunDun}(1096)
         │               ├─{AliYunDun}(1097)
         │               ├─{AliYunDun}(1098)
         │               ├─{AliYunDun}(1099)
         │               ├─{AliYunDun}(1100)
         │               ├─{AliYunDun}(1101)
         │               ├─{AliYunDun}(1102)
         │               ├─{AliYunDun}(1103)
         │               ├─{AliYunDun}(1104)
         │               └─{AliYunDun}(1105)
         ├─AliYunDunUpdate(1023)─┬─{AliYunDunUpdate}(1024)
         │                     ├─{AliYunDunUpdate}(1025)
         │                     └─{AliYunDunUpdate}(1026)
         ├─BT-Panel(2247)───{BT-Panel}(2248)
         ├─BT-Task(2269)─┬─{BT-Task}(2270)
         │               ├─{BT-Task}(2271)
         │               ├─{BT-Task}(2272)
         │               ├─{BT-Task}(2273)
         │               ├─{BT-Task}(2274)
         │               ├─{BT-Task}(2275)
         │               ├─{BT-Task}(2276)
         │               └─{BT-Task}(2277)
...

```

> 杀死进程

kill -9 进程id

表示强制结束该进程



## 环境安装

到这里,结合上一篇文章,基本命令就讲完了.下面就是环境安装,以及项目的发布了.马上就学发布项目是不是很兴奋

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

rpm(jdk:在线发布一个springboot项目)

解压缩(tomcat,启动并通过外网访问,发布网站),

yum在线安装(docker:直接运行跑起来) 我会用这三种方式演示

### jdk安装

1. 下载JDK rpm .去oralce官网下载即可
2. 安装java环境

```bash
#检测系统是否存在java环境 java-version
#如果有就需要先卸载自带的环境
#rpm -qa | grep jdk #检测JDK版本信息
# rpm -e --nodeps jdk_版本号

#卸载完成之后即可安装jdk
#rpm -ivh rpm包

# ls
apache-tomcat-9.0.38apache-tomcat-9.0.38.ziphaixin2jdk1.8.0_20jdk-8u281-linux-x64.rpmrediswww
# rpm -ivh jdk-8u281-linux-x64.rpm
warning: jdk-8u281-linux-x64.rpm: Header V3 RSA/SHA256 Signature, key ID ec551f03: NOKEY
Preparing...                        #################################
Updating / installing...
   1:jdk1.8-2000:1.8.0_281-fcs      ################################# Unpacking JAR files...
        tools.jar...
        plugin.jar...
        javaws.jar...
        deploy.jar...
        rt.jar...
        jsse.jar...
        charsets.jar...
        localedata.jar...
#

# java -version
java version "1.8.0_281"
Java(TM) SE Runtime Environment (build 1.8.0_281-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.281-b09, mixed mode)


# 配置环境变量
#配置环境变量:/etc/profile

vim /etc/profile

i进入编辑模式

在最下面输入一下信息.第一个为jdk安装的路径.一般默认是在这个位置

JAVA_HOME=/usr/java/jdk1.8.0_221-amd64
JRE_HOME=$JAVA_HOME/jre       
CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
export JAVA_HOME JRE_HOME CLASSPATH PATH

如果保存不成功,:wq! 来强制保存
我这里后来出现失灵ls cd等命令不可用(因为配置文件写错了)解决方法参考:https://blog.csdn.net/moonmoonroc/article/details/106590642
```

让配置生效:**source/etc/profile**

我们来发布一个网站(下面的操作,强烈建议大家手动操作一下,看似简单,有时会遇到许多意想不到的麻烦.我也是没有经验,弄了两个小时)

在本地打包一个项目jar包 (无需连接数据库的,)在本地测试是否可以正常访问 (项目最好不用8080,之前我们装过tomcat,不知道是不是这个原因,反正我的8080端口被占用了.)

端口被占用,我修改了端口号,准备重新打一个jar包.但是不知道哪里出了问题,一直出错,根据以往经验,我决定把项目中的target文件夹删除.

在删除时,一直显示本地的jdk运行了原来的jar包导致无法删除.我用了最直接的办法,重启电脑.然后获得了我想要的jar包

然后cd到 jar包所在目录,输入 java -jar xxx.jar 运行

然后访问 ,访问到了项目

通过xftp上传到云服务器(我放到了home目录下的自建文件夹中)

(查看项目需要访问的端口是否开启, 就是你上面的端口

开启端口:

firewall-cmd --zone=public --add-port=80/tcp --permanent

如果是阿里云服务器还需要在安全组里开启(不懂的可以看我之前关于服务器配置的文章)

重启防火墙:

systemctl restart firewalld.service

查看端口:

firewall-cmd --list-ports

)

cd到jar包目录

java -jarxx.jar

就OK了

伴随着我第一个项目的上市(哈哈,其实就是个项目壳壳),这一篇文章也落幕了.欢迎留言评论.喜欢就给个关注吧! 完结散花

xinziwenqing 发表于 2021-3-19 17:17

沙发进来学习下linux

52changew 发表于 2021-3-19 22:24

感觉Linux难; 要会写很多命令

黑白客 发表于 2021-3-20 10:15

52changew 发表于 2021-3-19 22:24
感觉Linux难; 要会写很多命令

分享一下我的心得吧,我之前也是这么感觉的,但是现在
我觉得 linux命令是学不完的,正确的学习方式应该是一学会命令的格式.以不变应万变.从而大概知道命令的意思.同时学会使用 man 命令. 来查看帮助文档.
如 你不知道ls命令   就man ls    会有这个命令的详细解释
当然.我上面的命令都是常用的命令,跟着敲一遍是完全有必要的.跟着我敲完.就已经可以基本使用啦.一点都不难了

52changew 发表于 2021-3-20 11:47

黑白客 发表于 2021-3-20 10:15
分享一下我的心得吧,我之前也是这么感觉的,但是现在
我觉得 linux命令是学不完的,正确的学习方式应该是 ...

哈哈; 谢谢大佬回复指导; 恩; 对; 也是要跟着练的; 这才会熟悉;

lanxiaopeng 发表于 2021-3-21 00:12

感谢分享

ss_wlc 发表于 2021-3-21 08:48

52changew 发表于 2021-3-20 11:47
哈哈; 谢谢大佬回复指导; 恩; 对; 也是要跟着练的; 这才会熟悉;

主要还是要多用,如果平常不用,学习后一段时间也会忘记。

52changew 发表于 2021-3-21 17:27

ss_wlc 发表于 2021-3-21 08:48
主要还是要多用,如果平常不用,学习后一段时间也会忘记。

恩; 会的; 谢谢 提醒; you too; 共勉{:1_893:}{:1_921:}
页: [1]
查看完整版本: linux服务器用户组,磁盘,进程管理以及项目发布讲解