命令 | 解释 |
---|---|
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:可执行 -:没有这个权限
例:
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系统中使用一下命令来查看文件的内容:
你可以使用man命令来查看各个命令的使用文档,如:man cp (全英文,不如百度去搜)
网络配置相关目录: /etc/sysconfig
默认网络配置文件: /etc/sysconfig/network-scripts/ifcfg-eth0 (CentOS7是这个,别的不一定)
查看ip:ifconfig
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 #软连接
基本上vi/vim分为三种模式,分别是:命令模式(Command mode),输入模式(Insert mode),底线命令模式(Last line mode),这三种模式的作用分别是:
命令模式:
用户刚刚启动vi/vim,便进入了命令模式,
此状态下敲击键盘动作会被vim识别为命令,而非输入字符,必须此时我们按下i,并不会输入一个 字符,而是被当成一个命令:
输入模式:
在命令模式下按i就可以进入输入模式
在输入模式中,可以使用以下按键
底线命令模式:
在命令模式下按:进入底线命令模式
使用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用户映射 |
注意:创建用户时候也可以设置这些,详情请另行百度!
切换用户
主机名
修改完毕之后需要重启
用户密码问题
通过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 # 这个是让账户失去密码,密码变为空,不能登录
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:
#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 参数表示强制结束该进程!
安装软件一般有三种方式:
我们开发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
ssm war 就需要放到tomcat中运行
解压tomcat
tar -zxvf apache-tomcat-9.0.22.tar.gz
启动tomcat
#执行文件startup.sh
./startup.sh
访问项目需要打相对路径!
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.清除版本之后,根据官方安装即可