Linux02-常用命令
Linux02-常用命令
1.Linux常用命令-磁盘管理
- df,查看文件系统整体的使用情况。
- df -h,-h,显示容易阅读的磁盘大小。
- du,查看目录占用磁盘的容量。
- du -sha /*,查看/目录下每个目录占用的磁盘容量。-s,只显示一个,使用这个参数不会显示子目录;-a,显示所有目录,包含隐藏的。
- du -sh ./*,查看当前目录中每个文件夹或者文件的大小,只查看一级。
- df -h ./*,查看当前目录中每个文件夹或者文件在挂在盘的大小。
2.Linux常用命令-目录挂在
- mount /dev/text /mnt/text,将外部设备text挂在到/mnt/text,挂在之后就可以使用了。
- umount -f /mnt/text,卸载设备。
3.Linux常用命令-进程管理
-
ps -aux,显示所有进程的详细信息,包含进程使用的内存CPU。
- -a,显示当前终端正在执行的进程。
- -u,显示进程的详细信息,包含进程的User、CPU和内存使用率、开始时间、执行进程的目录。
- -x,显示后台进程运行的参数。
- -aux输出参数说明。
VSZ,占用的虚拟内存大小。 RSS,占用的物理内存大小。 TTY,终端名称,缩写。 STAT,运行的状态。-S,休眠;-R,正在运行;-D,短期等待;-Z,僵死进程;-N,比普通进程的优先级更低。 START,开始时间。 TIME,使用CPU的总时间。 COMMAND,执行的命令
-
ps -ef,显示所有进程。
- -e,显示所有进程。
- -f,会显示进程的UID和PPID(父id),进程id是PID。
-
pstree,查看进程树。如果没有找到pstree命令,yum install psmisc安装。
-
pstree -pu,-p,查看PID;-u,查看UID。
-
free -h,查看内存使用情况,-h可读。
-
top,查看进程占用内存、CPU的情况,q退出。
-
jps。查看java进程信息,需要一些配置。
-
杀死进程。
- kill 1111,通过进程号,杀死1111进程。
- kill -9 1111,强制杀死1111进程。
- killall 进程名,通过进程名杀死进程。
4.Linux常用命令-端口查看
- netstat -ap|grep 22,。-a,显示所有连接的端口;-p,显示 PID和进程名。
- netstat -lnpt,查看正在监听的端口。
- netstat -ano | findstr "8080",Windows上查看8080端口是否被占用。返回结果为空,表示8080端口没有被占用。
5.Linux配置网络
- yum install net-tools,安装网络相关的工具。
- cd /etc/sysconfig/network-scripts。
- vim ifcfg-ens33。
ONBOOT=yes
- service network restart,重启网络服务。之后虚拟机就可以访问网络了。
6.Linux常用命令-重定向和追加
- echo "1" > k.txt,重定向,会覆盖原来的内容。
- echo "1" >> k.txt,将1追加到k.txt中。追加,不会覆盖原来的内容。
7.Linux常用命令-history
- history,显示所有的历史指令。
- history 10,显示最近的10条指令。显示的命令都有一个编号,可以通过!编号来执行该命令。
[root@localhost network-scripts]# history 10
308 cd ../
309 ls
310 cd sysconfig/
- !10,执行历史编号为10的命令。
8.Linux常用命令-时间管理
- date,查看当前时间。
- date +%Y_%m_%d_%H:%M:%S,查看当前时间,并以指定的格式输出当前时间。
- date -s "2020-12-12 12:20:12",设置当前时间为2020-12-12 12:20:12。
- cal,查看当月的日历。
- cal 2021,查看2021年的日历。
- ntpdate cn.pool.ntp.org,时间校准。需要安装,yum install npt。
9.Linux常用命令-文件名查找
- find / -name '*.sh',在根目录下寻找以.sh结尾的文件。
- find / -size +20M,查找大于20M的文件。
- find /tmp -user root,查找属于root用户的文件。
10.Linux常用命令-文件内容查找
- grep -rni 'h' /,在/根目录下查找文件中包含h的文件。-r,递归子目录;-n,显示行号;-i,不区分大小写。
- cat g01.sh | grep -n 'h',制定文件中查找包含h的行。
11.Linux常用命令-解压和压缩
- tar -zxvf filename.tar,解压。
- tar -czvf filename.tar 1.txt 2.txt,压缩,将1.txt和2.txt压缩为filename.tar。
12.Linux常用命令-任务调度
- crontab -e,编辑任务调度;crontab -r,删除当前用户所有的定时任务;crontab -l,显示当前用户的所有定时任务。
- 执行crontab -e后,在插入*/1 * * * * ls -l / >> /tmp/crontab.txt,每隔一分钟,将ls -l /的结果追加到/tmp/crontab.txt文件中。
- 执行crontab -e后,在插入*/1 * * * * /tmp/crontext.sh,每隔一分钟,执行一次crontext.sh脚本。
- cron表达式的解释。
- */1 * * * *,一共5位,每个位置分别表示分钟、小时、天、月、星期几。
- */1 * * * *,每隔一分钟。/(斜线),表示间隔。
- 1,2 * * * *,每小时的1和2分钟时执行。,(逗号),特定时间执行。
- 0 10-12 * * *,每天的10点到12点执行,即10点整、11点整和12点整执行。-(短杠),一个时间到另一个时间。
- 修改定时任务。直接通过crontab -e修改。
13.Linux常用命令-free、top
- free -h, 查看内存使用情况,-h可读。
- top,查看进程占用内存、CPU的情况。输入top命令后,在输入:p按照CPU排序;:m按照内存排序;:n按照PID排序。
14.Linux常用命令-systemctl
- systemctl命令兼容了service,并将unit存放在/usr/lib/systemd/system,unit主要分为四类:
- .mount,定义挂载点。
- .service,定义一个服务。
- .target,定义基础组件,供.service调用。
- .wants,定义要执行文件的集合。
- systemctl命令的格式。systemctl [command] [unit]。commond有七种:start、stop、status、enable(开启启动)、disable(关闭开机启动)、restart(相当于先执行start,在执行stop)、reload(不关闭unit,重新载入配置文件,让配置生效)。
- systemctl list-units,查看已经启动的unit。
- systemctl list-unit-files,查看系统安装的unit。
- systemctl list-unit-files --type=service,查看系统安装的服务。
- systemctl --failed,查看启动失败的unit。
- systemctl get-default,获取当前的target。
- systemctl isolate multi-user.target和sudo systemctl poweroff切换操作模式。
- sudo systemctl poweroff,系统关机。
- sudo systemctl reboot,重新开机。
- sudo systemctl suspend,进入暂停模式。
- sudo systemctl hibernate,进入休眠模式。
- sudo systemctl rescue, 强制进入救援模式。
- sudo systemctl emergency,强制进入紧急救援模式。
15.Linux常用命令-firewalld
- systemctl status firewalld,查看防火墙的状态。
- systemctl start firewalld,开启防火墙。
- firewall-cmd --query-port=80/tcp,查看80的端口是否开启,返回no、yes。
- firewall-cmd --add-port=80/tcp --permanent,开启80端口。--permanent,永久开放;tcp,协议。
- firewall-cmd --add-port=80/tcp,临时开放。
- firewall-cmd --reload,开放端口后需要重新加载,方可生效。
- firewall-cmd --permanent --remove-port=80/tcp,永久移除80端口。
- firewall-cmd --zone=public --list-ports,查看对外部已经开放的端口。
- chkconfig --list,查看每个服务的运行级别。
15.telnet
- telnet 192.168.253.128 23,Windows上查看linux23端口是否开启。
- 需要在Windows中开启telnet Client。开启方式控制面板,启动或关闭Windows功能,Telnet客户端打钩,然后确定。
16.Linux常用命令-rpm
- RPM全称,RedHat Package Manager。
- rpm -qa| grep xxx,全称软件是否安装。
- rpm -qf /etc/passwd,查询文件属于哪个软件包。
- rpm -ql setup-2.8.71-11.el7.noarch,查询软件包安装的位置。
- rpm -e --nodeps foo,强制卸载。
- rpm -ivh foo,软件安装。
17.Linux常用命令-yum
- yum是一个shell前端软件包管理,基rpm管理,能够从指定的服务器自动下载rpm包并且安装。
- yum list | grep vim,查询服务器是否有需要安装的软件。
- yum install vim,从服务器上安装vim。
18.Linux常用命令-其他命令
- cut
cut -s -d ":" -f 1-2 /etc/passwd # 对/etc/passwd每一行数据通过:进行切割。
# -s,不显示没有切割符:的列。
# -d 指定切割符 :
# -f 显示的列 1-2列
cut -s -d ":" -f 1,2,6 /etc/passwd # 显示1,2,6列的数据
cut -sd ":" -f 1,3,5 --output-delimiter="|" p # 显示1,3,5列的数据,并将切割符 变为 "|"
- wc,Word Count。
wc p # 查看文件p的信息
# 21 30 905 p,一共21行,30个单词,905字节。
wc -l p # 查看文件p的行数
wc -w p # 查看文件的单词数
- awk,强大的文本分析工具。
awk -F ":" '{print $1}' p
# -F 对文件p每行内容使用 : 切割。
# '{print $1}',输出第一列的数据,'{print $1}' 必须使用 '',不能使用""。
# 切割后使用 == 拼接
cat /etc/passwd | awk -F ":" '{print $1"=="$2}'
# 输出指定的开始文字和指定的结束文字。
cat /etc/passwd | awk -F ":" 'BEGIN {print "name,x"} {print $1"=="$2} END {print "end,k"}'
# 搜索带有 root 关键字的行
cat /etc/passwd | awk '/root/'
# 正则表达式搜索,以root开头的行。
awk '/^root/' /etc/passwd
# 搜索以root开头,并输出分割后第一列的内容。
awk -F : '/^root/{print $1}' /etc/passwd
# awk中内置变量
ARGC 命令行参数个数
ARGV 命令行参数排列
ENVIRON 支持队列中系统环境变量的使用
FILENAME awk浏览的文件名
FNR 浏览文件的记录数
FS 设置输入域分隔符,等价于命令行 -F选项
NF 浏览记录的域的个数
NR 已读的记录数
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符
# 使用awk的内置变量输出,文件名、当前行、和列对应内容
awk -F : '{print "filname:" FILENAME ",linenumber:" NR ",colums:" NF ",content:" $0}' /etc/passwd
# 使用awk的printf函数 awk -F : '{print $0}' -> awk -F : '{printf("out:%s")}}
awk -F : '{printf("filname:%s,linenumber:%s,colums:%s,content:%s\n",FILENAME, NR, NF, $0)}' /etc/passwd
# 自定义变量 使用count统计行数
awk -F : 'BEGIN {count=0;print "count is", count} {count=count+1;print $0} END {print "end count is ", count}' /etc/passwd
# if...else for while 数组
# name[count] 直接操作数据。
awk -F : 'BEGIN {count=0} {name[count] = $1;count++} END {for(i = 0;i < NR;i++) print i, name[i]}' /etc/passwd
- sed,文件处理。
sed -n '1p' my.txt # 查看my.txt文件第一场的内容。
# 参数p,输出内容和-n一起使用。
# d,删除该行的内容
# a,会新增一行内容,目标行的下一行。
# i,会新增一行内容,目标行的上一行。
19.curl
curl -X GET "http://192.168.253.1:8080/user/1" # Get请求
# Post
# -d 指定请求的参数。使用-d之后,默认为Post请求,可以不写-X POST
# -b 指定Cookie。即Cookie:JSESSIONID=123456
# -H 指定请求头。
curl -d '{"id": 100}' -b "JSESSIONID=123456" -H "user:tom" -X POST "http://192.168.253.1:8080/user"
# 使用Post请求后,请求参数的类型默认为Content-Type:application/x-www-form-urlencoded;charset=UTF-8,所以传递Json数据需要设置Content-Type。
curl -d '{"id": 100}' -b "JSESSIONID=123456" -H "user:tom" -H "Content-Type:application/json" -X POST "http://192.168.253.1:8080/update/user"
# 指定/tmp/myshell/a.txt文件中的数据作为请求参数。
curl -d '@/tmp/myshell/a.txt' -b "JSESSIONID=123456" -H "user:tom" -H "Content-Type:application/json" -X POST "http://192.168.253.1:8080/update/user"
20.ssh
# 在133上通过ssh在135上创建目录
ssh 192.168.253.135 "mkdir /tmp/mytest"
# 在133上登录135
ssh 192.168.253.135
ssh-kengen -t rsa # 生成秘钥
ssh-copy-id root@192.168.253.135 # 授权,免密登录
21.scp和rsync
# scp 推送到135,-r 递归拷贝
scp -r /opt/* admin@192.168.253.135:/opt/
# 在136上拉取 134上的文件
# -a 归于,归档
# -v 显示拷贝文件进度。
rsync -av admin@192.168.253.134:/opt/* /opt/
22.后台启动jar包并输出日志到指定文件中
java -jar /opt/module/redis-0.0.1-SNAPSHOT.jar >> /opt/module/jar.log 2>&1 &
23.xargs
# 上一个命令的执行结果作为下一个命令的执行参数
ls # mylog.log
ls | xargs cat # 输出mylog.log文件中的内容
# xargs和grep的区别,grep只是对上一下命令的执行结果,如'mylog.log'字符串进行过滤
ls | grep l