Linux基本命令
重启系统还是关闭系统,首先要运行 sync 命令,把内存中的数据写到磁盘中。
1. 关机和重启命令
sync # 将数据由内存同步到硬盘中。
shutdown –h now # 立马关机
shutdown –h 20:25 # 系统在今天20:25关机
shutdown –h +10 # 十分钟后关机
shutdown –r now # 系统立马重启
shutdown –r +10 # 系统十分钟后重启
reboot # 重启,等同 shutdown –r now
halt # 关闭系统,等同shutdown –h now 和 poweroff
树状目录结构:(Linux的一切资源都挂载在这个 / 根节点下)
ls [-al] /
# 查看 / (根目录)下有什么文件,列出目录下的文件和目录
- -a : 列出全部的文件,连同隐藏文件(也就是以.开头的文件)一起列出来(常用)
- -l : 长数据串列出,包含文件的属性与权限等等数据;(常用)
- -al : -a和-l两个作用加起来一起作用
目录说明
-
bin:bin是Binary(二进制文件)的缩写, 这个目录存放着经常使用的命令。
-
boot: 这个目录存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
-
dev:dev是Device(设备)的缩写,存放的是Linux的外部设备(在Linux中访问设备的方式和访问文件的方式是相同的)
-
etc: etc是Etcetera(等等)的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。更改目录下的文件可能会导致系统不能启动。
-
home:用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。
-
lib:这个目录里存放着系统最基本的动态连接共享库
-
media:linux系统会自动识别一些设备,例如U盘、光驱等等,识别后linux会把识别的设备挂载到这个目录下。
-
mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
-
opt:这是给主机额外安装软件所摆放的目录。比如你安装一个数据库则就可以放到这个目录下。
-
proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
-
root:该目录为系统管理员,也称作超级权限者的用户主目录。
-
sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
-
srv:这个目录存放一些服务启动之后需要提取的数据。
-
sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
-
tmp:这个目录是用来存放一些临时文件的。
-
usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
-
var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
-
run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。
-
lost+found :恢复文件存放的位置。当系统崩溃的时候,在系统修复过程中需要恢复的文件,可能就会在这里被找到了,这个目录一般为空。
-
lib64:为了隔离32位和64位而设置的不同目录,这种情况下/lib有可能是其符号链接。
2. 目录创建和切换命令
cd bin # 切换到bin目录下
cd .. # 回到上一级
cd ~ # 表示回到自己的家目录,亦即是 /root 这个目录
mkdir [-mp] pang # 使用 mkdir 命令创建 pang 目录
- -m :配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色
- -p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来!
3. 显示当前所在目录命令
pwd [-P] # pwd 是 Print Working Directory 的缩写,就是显示目前所在目录的命令
- -P :显示出确实的路径,而非使用连结 (link) 路径。
4. 删除文件和目录命令
rmdir [-firv] pj # 把当前目录下的pj目录给删除了
rm -rf / #删库跑路
- -f : 强行删除,忽略不存在的文件,不提示确认。(f为force的意思)
- -i : 进行交互式删除,即删除时会提示确认。(i为interactive的意思)
- -r : 将pj中列出的全部目录和子目录进行递归删除。(r为recursive的意思)
- -v : 详细显示删除操作进行的步骤。(v为verbose的意思)
5. 创建文件命令
touch a # 创建一个a文件
6. 复制文件命令
cp a avc # 把a文件复制到avc目录下
7. 移动文件或修改名称命令
mv [-fiu] a b # 把a文件移动到b目录下,a也可以是目录
- -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
- -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
- -u :若目标文件已经存在,且 source 比较新,才会升级 (update)
8. Linux 文件内容查看命令
- cat 由第一行开始显示文件内容
- tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
- nl 显示的时候,顺道输出行号!
- more 一页一页的显示文件内容
- less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
- head 只看头几行
- tail 只看尾巴几行
文件基本属性
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
ls –l # 显示一个文件的属性以及文件所属的用户和组
lrwxrwxrwx. 1 root root 7 May 11 2019 bin -> usr/bin # 第一个为l表示bin是一个链接文档
dr-xr-xr-x. 5 root root 4096 Nov 20 14:45 boot
在Linux中第一个字符代表这个文件是目录、文件或链接文件等等:
- 当为[ d ]是目录
- 当为[ - ]是文件
- 若是[ l ]表示为链接文档 ( link file )
接下来的字符以三个字符为一组,分三组:
- [ r ]代表可读(read)
- [ w ]代表可写(write)
- [ x ]代表可执行(execute)
- 如果没有权限,就会出现减号[ - ]
第一个root是文件的属主(文件的所有者是root用户),第二个root是文件属组(也就是文件属root组)
对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。同时,在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户。因此,Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。
例子:就好比,你买了一个玩具
- 属主是你(因为是你买的)和属组为黄氏家庭(这个家庭里面也有你),属主(你)有可看(读)、可拆(写)、可玩(执行)的权限;
- 与属主同组的其他用户(你的家人)有可看(读)和可玩(执行)的权限,但没有可拆(写)的权限;
- 其他用户只有可看(读)的权限,不能拆(写)也不能玩(执行)
- 对于 root 用户来说,一般情况下,文件的权限对其不起作用。
1. 修改用户的权限(开门事件中门自动打开,人就可以进入)
chmod 777 pj
# 更改pj文件9个属性 r:4 w:2 x:1
777,一个7代表一组权限,7就是rwx的加结果,就是开放该组的所有权限
2. 更改文件属主,也可以同时更改文件属组(开门事件中给人钥匙,他就可以开门进入)
chown [-R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
3. 更改文件属组
chgrp [-R] 属组名 文件名
# -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。
Linux 用户和用户组管理
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
1. 添加新的用户账号使用useradd命令
useradd -d[-cdgGsu] /home/sam -m sam
# 此命令创建了一个用户sam,其中-d和-m选项用来为登录名sam产生一个主目录 /home/sam(/home为默认的用户主目录所在的父目录)。
- -c comment 指定一段注释性描述。
- -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
- -g : 用户组 指定用户所属的用户组。
- -G :用户组,用户组 指定用户所属的附加组。
- -s :Shell文件 指定用户的登录Shell。
- -u :用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
2. 删除帐号
userdel [-r] 用户名
- -r:它的作用是把用户的主目录一起删除。
3. 修改帐号
usermod [-l] 用户名
- 常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。另外,有些系统可以使用选项:-l 新用户名这个选项指定一个新的账号,即将原来的用户名改为新的用户名。
4. 增加一个新的用户组使用groupadd命令
groupadd [-go] 用户组
- -g :GID 指定新用户组的组标识号(GID)。
- -o :一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。
5. 删除一个已有的用户组
groupdel 用户组
6. 修改用户组的属性使用groupmod命令
groupmod [-go] 用户组
groupmod -g 10000 -n group3 group2
# 此命令将组group2的标识号改为10000,组名修改为group3。
- -g :GID 为用户组指定新的组标识号。
- -o :与 -g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
- -n :新用户组 将用户组的名字改为新名字
Vim使用
vim 分为三种模式
- 命令模式(Command mode)
- 输入模式(Insert mode)
- 底线命令模式(Last line mode)
命令模式:
用户一启动 vim,便进入了命令模式。
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。
以下是常用的几个命令:
- 按i 切换到输入模式,可以输入字符。
- 按: 切换到底线命令模式,可以在最底一行输入命令。
编辑文本:启动Vim,进入了命令模式后,按下i,切换到输入模式
输入模式:
在输入模式中,可以使用以下按键:
- ENTER,回车键,换行
- BACK SPACE,退格键,删除光标前一个字符
- DEL,删除键,删除光标后一个字符
- 方向键,在文本中移动光标
- HOME/END,移动光标到行首/行尾
- Page Up/Page Down,上/下翻页
- Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
输入模式下按ESC,切换到命令模式
底线命令模式
在底线命令模式中,基本的命令有(已经省略了冒号):
- q 退出程序
- w 保存文件
按ESC键可以退出底线命令模式
防火墙开启端口
# 开启防火墙
service firewalld start #旧的
systemctl start firewalld #新的
# 重启防火墙
service firewalld restart
# 关闭防火墙
service firewalld stop
# 查看防火墙状态
firewall-cmd --state
# 查看防火墙规则
firewall-cmd --list-all # 查看全部信息
firewall-cmd --list-ports # 只看端口信息
# 开启80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent # 开端口命令
systemctl restart firewalld.service # 开启端口后要重启防火墙
# 开始端口命令含义:
--zone #作用域
--add-port=80/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效
基本安装
linux安装软件有三种方式
- rpm安装
- yum在线安装
- 解压缩安装
rpm安装jdk
安装jdk之前先看自己linux是多少位的,这里是64位的,通过Xftp把jdk-8u172-linux-x64.rpm传到自己的阿里云服务器
安装jdk
rpm -ivh jdk-8u172-linux-x64.rpm # rpm安装命令
卸载jdk(演示)
rpm -qa|grep jdk # 检查jdk版本信息
rpm -e --nodeps jdk1.8-1.8.0_172-fcs.x86_64 # 卸载jdk
配置环境变量
vim /etc/profile
在文件最下面加:
解压缩安装tomcat
进到tomcat压缩包的目录下执行命令
tar -zxvf apache-tomcat-10.0.2.tar.gz
启动tomcat
[root@iZwz9a2saegn7cjsd3fovmZ bin]# ./startup.sh
开启防火墙端口即可外网访问
注意协议是http,不是https,一般浏览器会补全而导致访问不了
常用命令
查看特定服务信息
- t :仅显示tcp相关选项
- u:仅显示udp相关选项
- p:显示建立相关链接的程序名(记住pid)
- l:仅列出有在 Listen (监听) 的服务状态
- n:拒绝显示别名,能显示数字的全部转化成数字
- | 表示管道,上一条命令的输出,作为下一条命令参数(输入)
- grep:过滤筛选
# 按端口查找
netstat -tupln|grep 端口号
# 按服务名查找
netstat -tupln|grep 服务名
查看全部在运行中的端口
netstat -tupln
杀死对应端口
# 要杀死对应进程的pid
kill -9 pid