Linux 命令
* 按照时间排序:
t 修改时间 u 访问时间 c 状态更改时间
ll -t 倒叙(默认倒叙)【ll -sh -t 可以自由组合,使用人性化方式展示】
ll -tr 正序
* linux 查看端口占用:
lsof -i 【比较全,可以直接看到端口和进程号,kill 可以杀,直接指定端口:lsof -i:13579 ,然后直接 kill 】
netstat -tuln
* win 下查看目录:dir (类似 ls )
* 不同虚拟机之间互传文件的方法
从一台虚拟机主动推送文件到另一台虚拟机:(默认使用 22 端口,如需指定端口,scp -P 后面加大写的 -P xxx )
推文件给别人:
scp test.sql root@目标ip:/data/
主动拉取文件:
scp -r root@目标ip:/data/test.sql /data/
* 查看服务器信息
lscpu //查看服务器核心数量
ps aux --sort=%cpu //查看所有进程(ps aux --sort=-%cpu 倒叙展示)
cat /etc/redhat-release //查看当前服务器的版本
cat /proc/cpuinfo //查看服务器基本参数信息
free -h //查看运行内存
top //查看任务管理,所有线程动态展示
date //查看服务器当前时间
* 使用 cat 命令或者其他任何命令,想查看前几行数据,不要全部出来,写法如下:
cat xx.txt | head -n 5 //5 表示只展示 5 行
ip addr | head -n 5 //只显示5行数据
* centos ens33没有ip的解决方法(没有ip会导致无法ping通别的服务)
最简单的方式,直接输入:dhclient ens33 后,即可 ping 通
* sudo crontab -l //查看正在执行的任务列表( crontab 定时任务,需要在 root 权限下才可以看到)
* sudo crontab -e //修改定时任务
/sbin/service crond status //查看状态
/sbin/service crond start //启动
/sbin/service crond stop //停止
/sbin/service crond restart //重启
/sbin/service crond reload //重载
* linux 把一个文件夹包括文件夹下面的所有文件压缩成一个压缩包放在当前目录下:
zip -r conf.zip conf【-r 表示当前目录下所有的,conf.zip 压缩后的名字,conf 要压缩的文件】
* 查看指定端口占用程序进程号
netstat -tunlp | grep 端口号
* linux 访问自己测试:
curl 127.0.0.1
* 测试当前所在机器是否能联通某台机器
telnet ip 端口
(例子:telnet 127.0.0.1 8080)
* linux 查看外网 ip
curl ifconfig.me
curl 命令的运用:
(1)在 linux 里面模拟 post 请求:
curl http://127.0.0.1:7000/clothing/test/test6 -X POST -H "Content-type:application/json" -d '{"id":3}'
curl 请求路径 -X 请求方式 -H 参数提交方式 -d 请求数据 // -X POST -H 这几个参数必须大写
(2)模拟 get 请求:
curl http://127.0.0.1:7000/clothing/test/test6?name=haha //请求参数不能是中文
* 查看端口是否 ping 得通
wget ip:8080 (ip 是服务器的公网ip)
ping 通会出来信息,一直 Connecting to ... 表示不通
【安装 wget 命令:yum -y install wget 】
* 开启 linux 指定端口:
firewall-cmd --zone=public --query-port=8080/tcp(检查 8080 端口是否开启成功)
firewall-cmd --zone=public --add-port=8080/tcp --permanent (开启 8080 端口,--permanent 没有该参数重启后失效,开启后,要重启防火墙才生效)
firewall-cmd --zone=public --remove-port=80/tcp --permanent(删除 8080 端口,--permanent 没有该参数重启后失效)
firewall-cmd --list-ports(查看开放的端口)【开启了某个端口,要查看前,需要重启防火墙才可以看到】
systemctl restart firewalld.service(重启 防火墙)
firewall-cmd --state (查看防火墙是否启动)
1. 永久性生效
开启:chkconfig iptables on
关闭:chkconfig iptables off
2. 即时生效,重启后失效
开启:service iptables start
关闭:service iptables stop
注意:centos 7 以上,使用:
安装:yum install firewalld
firewalld的基本使用
启动: systemctl start firewalld
关闭: systemctl stop firewalld
重启: systemctl restart firewalld.service
查看状态: systemctl status firewalld
开机禁用 : systemctl disable firewalld
开机启用 : systemctl enable firewalld
查看开放的端口:firewall-cmd --list-ports
mysql 启动:systemctl start mysqld.service
mysql 停止:systemctl stop mysqld.service
mysql 设置开机启动:systemctl enable mysqld.service
* 查看ip
ifconfig -a ( win : ipconfig)
* 查看linux 上 tomcat 是否启动中
ps -ef | grep java (出现很多数据,则启动中;只出现一行数据,表示关闭了)
kill -9 7010 (强制关闭 tomcat ,先使用查看命令可看到 端口号,再强制关闭)
启动 : ./startup.sh
关闭 : ./shutdown.sh
* 查看远程服务器公网 ip
curl ifconfig.me
或者:
curl cip.cc
[ xkill : 强制关闭桌面图形界面窗口 ,运行后鼠标变成 “X”,直接点击桌面要关闭的图形界面窗口即可!类似 win 任务管理器强关 ]
* ctrl + u = ctrl + z 撤回
在 vi 中,
(1)直接 i 编写模式下,ctrl + u 就是撤回上一步,
(2)esc 模式下,直接按 u 也是撤回
* ctrl + r = ctrl + y 恢复上一步(自测不成功,不明原因,待再测)
* :wq 保存退出
* :w = ctrl + s 保存不退出
* :q! 不保存退出
* 在 esc 模式下:
dd 删除整行
yy 复制整行
pp 粘贴整行
*(1) 压缩操作【压缩:c 新 旧】
tar -czvf 新文件名 旧文件名 -C 要放的路径【直接:tar -czvf 新文件名 旧文件名】
(2)解压操作【解压:x 旧 新】
tar -xzvf 旧文件名 新文件名 -C 要放的路径【直接:tar -xzvf 旧文件名】
(3)win 把文件夹压缩成 tar 后发送到 linux 上再解压
使用 7z 工具压缩成 .tar 压缩包,然后在 linux 使用:
tar -xf demo.tar 即可解压到当前目录
“归档”是压缩的前一个步骤,有以下参数表示:
-c 创建归档(一个没有压缩的文件包)文件包【大写的 -C 意思不同,是指解压到哪个目录的意思】
-x 解压
-t 不解压的情况下,查看压缩包里面的文件
-v 显示解压的过程
-f 指定解压后的文件名
-z 、-j 两种压缩的方式
还有一个 zip 压缩;unzip 解压缩命令,比较简单:
例子: zip aa.zip aa //就是压缩 aa 为 aa.zip
unzip aa.zip //就是解压 aa
* 查看文件的“创建时间”以及“各种权限”
ls -l 文件名
* 给文件设置权限
chmod 777 文件名
权限表示 权限代码 所有者权限 群组权限 所有人权限
-rw------- 600 读、写 - -
-rw-r–r-- 644 读、写 读 读
-rwx------ 700 读、写、执行 - -
-rwxr-xr-x 755 读、写、执行 读、执行 读、执行
-rwx–x--x 711 读、写、执行 执行 执行
-rw-rw-rw- 666 读、写 读、写 读、写
-rwxrwxrwx 777 读、写、执行 读、写、执行 读、写、执行
-rwx rwx rwx
第一个 “-” 表示普通文件,rwx ,对应十进制 4 2 1,加起来就是 7 ,故最高权限是 777
第一个 rwx 表示本用户(u),第二个 rwx 表示组用户(g),第三个 rwx 表示其他用户(o),分别表示3个权限
另一种表示方式:
chmod u+w test.log //给本用户赋予写权限
chmod g-x text.log //将组用户的自信权限去除
chmod o=r text.log //给其他用户赋予读权限
chmod a+x text.log //给本用户,组用户,其他用户赋予执行权限【a 表示所有的】
* 改变“主”和“组”:
-rw-r--r--. 1 root mongo3 0 Mar 3 21:59 b.text
第一个 root 是所属主(本人)的意思;第一个 mongo3 是所属组(所在组)的意思
使用 chown 修改本人,使用 chgrp 修改组,使用 -R 命令是递归修改其下所有的。
* 创建文件
touch xxx
touch 还可以用于修改文件时间:
touch -d "2019-08-08 10:10:10" 文件名
-d : 同时修改读取时间和修改时间
-a : 只修改 “读取时间”
-m : 只修改 “修改时间”
* 判断这个文件是什么类型
file xx
* 上传下载命令
rz 上传
sz 下载
(在线安装命令:yum install lrzsz ,如果没有 yum 源的,可以使用:apt-get install lrzsz )
* 下载各种安装包,可以使用:
wget url
( url : 安装包的远程路径,这样既可自动下载到对应的目录里面了)
* win 系统下查看端口:
netstat -ano
------------------------------------------------------------------------------------------------
* 查看内存硬件信息:
cat /proc/meminfo
查看cpu 硬件信息:
cat /proc/cpuinfo
* 定时任务:crontab
查看有哪些定时任务:crontab -l
编辑定时任务:crontab -e
删除定时任务:crontab -r(或者 -ri ,i 表示删除的时候提醒,是否删除)
* 磁盘空间占用查看命令:
df 查看全部磁盘空间占用情况(或者 df -h ,加上 -h 表示人性化方式展示,即单位根据情况变化 k 或者 m 或者 g)
某个文件目录下的空间占用情况:
du 查看该目录下的所有空间,前提得先 cd 到这个目录下,也可以直接 du /home/xxx 这样直接指定目录(同理,可以加上 -h ,人性化展示 du -h)
du -s 只展示最大的一个目录
du -sh 人性化展最大的目录占用的空间
【
df -h 查看所有磁盘下的内容容量和各自占用情况
du -sh /xxx 查看具体某个文件或文件夹大小占用情况
】
* 域名解析:nslookup(把域名解析成 ip ,也可以反向解析,把 ip 解析出来是什么域名,但这个不是所有 ip 都支持)
nslookup www.baidu.com
结果为:
Server: 192.168.17.2 //哪里发起的解析
Address: 192.168.17.2#53
Non-authoritative answer: //解析后的结果
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 110.242.68.4
Name: www.a.shifen.com
Address: 110.242.68.3
* 用户的添加:
需要有管理员权限才可以:
useradd -m mongo //创建在家目录下的一个新用户
passwd mongo ,然后连续输入两次密码,给该用户设置密码,不进行这一步操作,不需要密码即可登录
userdel mongo ,删除该用户
查看当前是哪个用户:whoami
查看所有登录的用户:who
查看每个用户的id :id -u mongo
* 用户之间的切换:
su 用户名,
切换到管理员,才可以用 sudo -i
sudo 是临时获取管理员权限的意思
比如:
mongo$: useradd -m mongo2
会报没有权限,如果:
mongo$: sudo useradd -m mongo2
就可以创建。
并不是所有用户都可以用 sudo 来临时获取管理员权限,只有在 sudo 组里面的才可以。
* 用户的锁定和解锁
usermod -L 用户名
usermod -U 用户名
这种情况,只有在普通 a用户和普通b用户之间才能体会到锁定和解锁,root 用户下,依然可以登录。
比如:锁定a用户后,b用户无法登录a用户,解锁后就可以
特殊情况:如果a用户锁定了,然后 root 用户修改了a用户的密码,此时 b用户用新密码,则可以登录,修改了密码会自动解锁
创建的用户,账号放在:/etc/passwd 里面
密码放在:/etc/shadow 里面
* 用户组的新建和删除:
新建:
groupadd 组名
groupadd -g 1003 组名 //-g 用户自己指定组 id,不写默认给一个
可以在 /etc/group 目录下查看到新建的组
删除:
groupdel 组名
查看用户位于哪个组:
groups //查看当前用户位于哪些组,一个用户可以位于多个组
groups 用户名 //指定查看用户位于哪个组
【创建用户的同时,会默认创建一个和用户名同名的组!所有用户都会放在组里面!】
* 将用户添加到组里面:
gpasswd -a 用户名 组名
将用户从该组删除:
gpasswd -d 用户名 组名
改变有效群主:【理解:一个用户可以有多个群主,位于第一个的是有效群主,使用 groups 查看排序】
newgrp 组名
* 在一台 linux 里面链接连一台 linux ,在 linuxA 里面 ifconfig 查看 ip ,然后在 linuxB 里面 ,使用:ssh linuxA用户名@ip,再输入 yes,输入密码,即可远程连接
比如:ssh mongo@192.168.8.139
* shell 脚本查询某一个进程 pid :
ps aux | grep 服务名 | grep -v "grep" | awk '{print $2}'
① ps aux 列出所有进程
② | grep 服务名 筛选出指定服务名称的进程
③ | grep -v "grep" 去掉 grep 本身的结果(每次查询,本身服务会带有一个 grep 进程,要过滤掉)
④ | awk '{print $2}' 获取列表的第二列,即 pid。