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了
伴随着我第一个项目的上市(哈哈,其实就是个项目壳壳),这一篇文章也落幕了.欢迎留言评论.喜欢就给个关注吧! 完结散花 沙发进来学习下linux 感觉Linux难; 要会写很多命令 52changew 发表于 2021-3-19 22:24
感觉Linux难; 要会写很多命令
分享一下我的心得吧,我之前也是这么感觉的,但是现在
我觉得 linux命令是学不完的,正确的学习方式应该是一学会命令的格式.以不变应万变.从而大概知道命令的意思.同时学会使用 man 命令. 来查看帮助文档.
如 你不知道ls命令 就man ls 会有这个命令的详细解释
当然.我上面的命令都是常用的命令,跟着敲一遍是完全有必要的.跟着我敲完.就已经可以基本使用啦.一点都不难了 黑白客 发表于 2021-3-20 10:15
分享一下我的心得吧,我之前也是这么感觉的,但是现在
我觉得 linux命令是学不完的,正确的学习方式应该是 ...
哈哈; 谢谢大佬回复指导; 恩; 对; 也是要跟着练的; 这才会熟悉; 感谢分享 52changew 发表于 2021-3-20 11:47
哈哈; 谢谢大佬回复指导; 恩; 对; 也是要跟着练的; 这才会熟悉;
主要还是要多用,如果平常不用,学习后一段时间也会忘记。 ss_wlc 发表于 2021-3-21 08:48
主要还是要多用,如果平常不用,学习后一段时间也会忘记。
恩; 会的; 谢谢 提醒; you too; 共勉{:1_893:}{:1_921:}
页:
[1]