文章目录
- 文件目录相关
- 时间日期相关
- 用户相关
- 用户组相关
- 文件权限相关
- 磁盘分区相关
- 搜索查找相关
- 进程线程相关
- 网络相关
- 压缩和解压相关
- 服务相关
- 系统定时任务相关
- RPM
- Yum
- 下载
文件目录相关
rm -rf /usr/local/tomcat9/logs/localhost_access_log.2018-* # 删除以某个字符开头的所有文件及目录
mkdir -p /data/mysql/backup/topdb_test/2019-01-28 # 建立多级文件目录 -p,父目录没有也可以创建
cp pre_basic.txt /opt/top_resources/db # 拷贝文件
cp -r /usr/tomcat9/webapps/Web/ /usr/nginx/webapps/Web/ # 拷贝目录,nginx下Web不存在
# \斜杠作用:加上斜杠就不会一直提示是否覆盖了。-r 递归处理,-f 强行复制
\cp -rf /opt/top_resources/resource /opt/ossfs/
\cp -rf /opt/ossfs/resource/45* /opt/top_resources/resource
head -n 1000 test.java # 显示前1000行
tail -n 1000 test.java # 显示最后1000行
tail -n +1000 test.java # 从1000行开始显示,显示1000行以后的
tail -f test.java # 实时追踪该档的所有更新
cat test.java | tail -n +1000 | head -n 2000 # 显示1000行到3000行
cat test.java | head -n 3000 | tail -n +1000 # 显示1000行到3000行
head -n 3000 | tail -n +1000 test.java # 显示1000行到3000行
ls -l>t.txt # 重定向(覆盖)
ls -l>>t.txt # 重定向(追加)
echo hello>>test1.java
echo $JAVA_HOME
# ln -s [原文件] [目标文件] 功能描述:给原文件创建一个软链接,软链接存放在目标文件目录
ln -s /opt/module/hadoop-2.1.2/ /opt/software/hadoop
cd /opt
du -sh * # 查看/opt目录下所有文件及目录的大小
du -sh test.txt # 查看/opt目录下test.txt的大小
stat test.txt # 查看文件的创建时间和修改时间
wc -l test.txt # 查看文件有多少行
sed -n '4,6p' test.txt # 查看第4-6行的数据
sed -n 4p test.txt #查看文件中的第4行数据
sed -n '/hello/p' t.txt # 模式匹配hello并打印出来
sed -i "s/qwe/abc/g" test.txt # 将文件中的"qwe"字符串替换为"abc"
时间日期相关
date # 查看当前时间
date +%Y
date +%Y/%m/%d
date "+%Y/%m/%d %H:%M:%S"
date -d '1 days ago' # 1天前
date -d '-1 days' # 1天前
date -d yesterday +%Y/%m/%d
date -d next-day
date -d 'next-monday'
date -s "2020-02-29 20:00:00" # 设置系统时间
cal # 不加选项,显示本月日历
cal -3 # 显示上月,当前月,下月日历
cal 2020 # 显示2020年日历
用户相关
useradd dly # 添加用户dly
passwd dly # 给dly设置密码
id dly # 判断用户是否存在
su dly # 切换用户,只能获得用户的执行权限,不能获得环境变量
su - dly # 切换到用户并获得该用户的环境变量及执行权限
userdel dly # 删除用户,但保存用户主目录
userdel -r dly # 用户和主目录都删除
who # 看当前有哪些用户登录到了本台机器上
who am i # 显示登录用户的用户名
whoami # 显示自身用户名称
cat /etc/passwd # 查看创建了哪些用户
usermod -g dev dly # 修改用户,将dly加入dev组
# 设置普通用户具有root权限
vim /etc/sudoers
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
dly ALL=(ALL) ALL
# 或者,配置成采用sudo命令时,不需要输入密码
dly ALL=(ALL) NOPASSWD:ALL
# 修改完su - dly登录dly,即可获得root权限进行操作
用户组相关
Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。用户组的增加、删除和修改实际上就是对/etc/group文件的更新。
groupadd dev # 添加组
groupdel dev # 删除组
groupmod -n dev_new dev # 修改dev组名为dev_new
cat /etc/group # 查看创建了哪些组
文件权限相关
[root@VM_0_6_centos opt]# ll
总用量 32
drwxr-xr-x. 2 root root 4096 9月 7 2017 rh
-rw-r--r-- 1 root root 22044 12月 1 2018 shou.jpg
-rw-r--r-- 1 root root 194 3月 1 00:43 t.txt
- -rw-r–r-- 1 root root 194 12月 1 2018 shou.jpg
文件类型与权限 链接数 属主 属组 文件大小 建立或最近修改时间 文件名
链接数:如果是文件,链接数指的是硬链接个数;如果是目录,指的是子文件夹个数。 - 没有权限会显示-
- -rw-r–r--
- 0位表示类型
- - 代表文件
- d 代表目录
- c 字符流,装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)
- s socket
- p 管道
- l 链接文档(link file)
- b 设备文件,装置文件里面的可供储存的接口设备(可随机存取装置)
- 第1-3位确定属主(该文件的所有者)拥有该文件的权限 --User
- 第4-6位确定属组(所有者的同组用户)拥有该文件的权限 --Group
- 第7-9位确定其他用户拥有该文件的权限 --Other
- rwx作用于文件和目录有不同的解释
- 作用于文件
- r:可读取,查看
- w:可修改。但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件。
- x:可以被系统执行
- 作用于目录
- r:可读取,ls查看目录内容
- w:可以修改,目录内创建 + 删除 + 重命名目录
- x:可以进入该目录
# chmod修改权限 chmod [{ugoa}{+-=}{rwx}] [文件或目录] [mode=421 ] [文件或目录]
# u:user,g:group,o:other,a:all
# +:增加权限,-:去掉权限,=:设置权限
# 111 = 4 + 2 + 1 = 7
chmod u+x t.txt
chmod g+x t.txt
chmod o+x t.txt
chmod a+x t.txt # 增加文件所有用户组可执行权限
chmod ug+w,o-rw t.txt # 同时修改不同用户权限,逗号分隔
chmod u=x t.txt # 使用=设置权限
chmod 777 t.txt
chmod -R 777 rh
# chown改变所有者 chown [最终用户] [文件或目录]
chown dly t.txt
chown -R dly:dev test
# chgrp改变所属组 chgrp [最终用户组] [文件或目录]
chgrp dev t.txt
磁盘分区相关
# 查看分区
fdisk -l # 查看磁盘分区详情
# 查看硬盘
df -a # 列出所有的文件系统
df -k # 以 KBytes 的容量显示各文件系统
df -m # 以 MBytes 的容量显示各文件系统
df -h # 以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示
df -H # 以 M=1000K 取代 M=1024K 的进位方式
df -T # 显示文件系统类型,连同该 partition 的 filesystem 名称 (例如 ext3) 也列出
df -i # 不用硬盘容量,而以 inode 的数量来显示
# 挂载/卸载 mount [-t vfstype] [-o options] device dir
mkdir /mnt/cdrom # 建立挂载点
mount -t iso9660 /dev/cdrom /mnt/cdrom # 设备/dev/cdrom挂载到挂载点/mnt/cdrom
umount /mnt/cdrom # 卸载
vim /etc/fstab # 开机自动挂载添加如下
/dev/cdrom /mnt/cdrom iso9660 defaults 0 0
搜索查找相关
| 管道符 表示将前一个命令的处理结果输出传递给后面的命令处理
- which 搜索命令所在目录及别名信息
# which 命令
which ls
- find 查找文件或目录
find pathname -options [-print -exec -ok]
- pathname 所查找的目录路径。/ 根目录,. 当前目录
- options
- -name :按照文件名查找文件
- -perm :按照文件权限来查找文件
- -user :按照文件属主来查找文件
- -group :按照文件所属的组来查找文件
- -mtime -n +n 按照文件的更改时间来查找文件,-n表示文件更改时间距现在n天以内,+n表示文件更改时间距现在n天以前。
- -atime
- -ctime
- -size n[c]查找文件长度为n块的文件,带有c时表示文件长度以字节计。
+n大于,-n小于,n等于 - -nogroup 查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在
- -newer file1 !file2查找更改时间比文件file1新但比文件file2旧的文件
- -depth 先查找指定目录有无匹配文件,若无则再在子目录中查找
- -type 查找某一类型的文件,如
b:块设备文件
d:目录
e:字符设备文件
p;管道文件
l:符号链接文件
f:普通文件
- print -exec -ok
print:find命令将匹配的文件输出到标准输出
exec:find命令对匹配的文件执行该参数所给出的shell命令,相应的命令形式为
exec command {} ; (注意{}和\之间有空格)
ok:和 -exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
注:
在使用find命令的-exec选项处理匹配到的文件时,find命令将所有匹配到的文件一起传递给exec。不幸的是,有些系统对能够传递给exec的命令长度有限制,这样find命令运行几分钟之后就算出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs的用处所在,特别是与find命令一起使用,exec会发起多个进程,而xargs只有一个。
find /opt -name *.txt
find . -perm 777
find . -perm 755 -print | xargs chmod o-w # 查找权限为755的文件并传递给chmod处理
find `pwd` -user dly -print
find . -mtime -5 # 查找当前目录下修改时间为5天内的文件及目录
find /opt -size +100c -size -2000c # 查找大于100字节小于2000字节的文件及目录
find /opt -size +50M # 查找>50M的文件及目录
find /opt -type d # 查找/opt目录下的所有目录
find /opt -type f -exec ls -l {} \; # 查找/opt目录下是否有普通文件,有则执行ls -l(注意:这里的命令不能写缩写,如写成ll,则找不到)
find /var -newer "myfile1" ! -newer "myfile2" -print # 查找/var目录下比myfile1新,但是比myfile2旧的所有文件。
find /data/top_resources/resource -name 107* -type d| wc -l # 查看某路径下107开头的文件夹个数
find /data/top_resources/resource -name 107* -type f| wc -l # 查看某路径下107开头的文件个数
find /data/top_resources/resource -name 107* -type f # 查看某路径下107开头的文件
find /demo -name "*.js" |xargs cat|wc -l # 统计某目录下所有js文件的代码行数
wc -l `find /demo -name "*.js"`|tail -n 1# 统计某目录下所有js文件的代码行数
find /demo -name "*.js" |xargs cat|grep -v ^$|wc -l # 统计某目录下所有js文件的代码行数(过滤空行)
- grep过滤查找
grep + 参数 + 查找内容(一般为正则表达式)+ 源文件
- 参数
-c:只输出匹配行的计数。
-I:不区分大小写(只适用于单字符)。
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。 - 正则表达式
- ^ :只匹配行首。
^a 匹配以a开头的行abc,a2e,a12,aaa,… - $ :只匹配行尾。
如^a 匹配以a结尾的行bca,12a,aaa,…
^$ :匹配空行
^.$ :匹配包含一个字符的行 - * :匹配0个或多个此单字符。
如(a)* 匹配 空,a,aa,aaa,… - [] :只匹配[]内字符。可以是一个单字符,也可以是字符序列,用","将里面要匹配的不同字符串分开。也可以使用-来表示[]内字符序列的范围,
如[1-5]表示[12345]
[a-z] :任意小写字母
[A-Za-z] :任意大小写字母
[S,s] :匹配大小写S - \ :只用来屏蔽一个元字符的特殊含义。
如*,’,",|,+,^,. 等 - .:(点)只匹配任意单字符。
- pattern{n}:只用来匹配前面pattern出现的次数n为次数。如a{2}匹配aa。
pattern{n,}:含义同上,但次数最少为n。如a{2,}匹配aa,aaa,aaaa,…
pattern{n,m}:含义同上,但次数在n和m之间。如a{2,4}匹配aa,aaa,aaaa三个
ls | grep -n test # 查找包含test的文件,显示匹配行及行号
grep ^[^210] myfile # 匹配myfile中以非2、1、0开头的行
grep "[5-8][6-9][0-3]" myfile # 匹配myfile中第一位为5|6|7|8,第二位6|7|8|9,第三位为0|1|2|3的三个字符的行
grep "4\{2,4\}" myfile # 匹配myfile中含有44,444或4444的行
grep "\?" myfile # 匹配myfile中含有任意字符的行
grep "5[[:digit:]][[:digit:]]" myfile # 匹配myfile中含有5开头接下去两位都是数字的行。
ls /opt/top_resources/resource | grep "^t" | wc -l # 查看某个路径下以d开头的文件及文件夹个数
ls -l|grep "^d">/data/top_resources/d_server.txt # 将某个目录下的文件夹输出到文本文档
# 查看文件中某个字符有多少个
grep -w "192.168.1.1" ttt.txt | wc -w
grep -w "192.168.1.1" ttt.txt | wc -l
cat ttt.txt | grep '192.168.1.1'
# 查找文件中有多少ip。-c : 计算查找到的结果数量。-E : 使用正则表达式。
grep -cE "[0-9]+.[0-9]+.[0-9]+.[0-9]+" abc.txt
grep命令类名 :
[[:upper:]] 表示[A-Z]
[[:alnum:]] 表示[0-9a-zA-Z]
[[:lower:]] 表示[a-z]
[[:space:]] 表示空格或者tab键
[[:digit:]] 表示[0-9]
[[:alpha:]] 表示[a-zA-Z]
进程线程相关
查看进程
ps aux # 查看所有进程
ps aux | grep java # 查看java进程
ps -ef | grep mysql # 查看进程
ls -l /proc/进程号/cwd
kill -9 进程号 # 终止进程。-9 强迫进程立即停止
USER:该进程是由哪个用户产生的
PID:进程的ID号
%CPU:该进程占用CPU资源的百分比,占用越高,进程越耗费资源;
%MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源;
VSZ:该进程占用虚拟内存的大小,单位KB;
RSS:该进程占用实际物理内存的大小,单位KB;
TTY:该进程是在哪个终端中运行的。其中tty1-tty7代表本地控制台终端,tty1-tty6是本地的字符界面终端,tty7是图形终端。pts/0-255代表虚拟终端。
STAT:进程状态。常见的状态有:R:运行、S:睡眠、T:停止状态、s:包含子进程、+:位于后台
START:该进程的启动时间
TIME:该进程占用CPU的运算时间,注意不是系统时间
COMMAND:产生此进程的命令名
查看进程树
pstree -p # 显示进程的PID
pstree -u # 显示进程的所属用户
top 实时显示 process 的动态
top -d 1 # 指定top命令每隔几秒更新。默认是3秒
top -i # 使top不显示任何闲置或者僵死进程
top -p 3333 # 通过指定监控进程ID来仅仅监控某个进程的状态
- 操作选项
- P:以CPU使用率排序,默认就是此项
- M:以内存的使用率排序
- N:以PID排序
- q:退出top
- 查询结果解释
- 第一行
内容 | 说明 |
12:26:46 | 系统当前时间 |
up 1 day, 13:32 | 系统的运行时间,本机已经运行1天13小时32分钟 |
2 users | 当前登录了两个用户 |
load average: 0.00, 0.00, 0.00 | 系统在之前1分钟,5分钟,15分钟的平均负载。一般认为小于1时,负载较小。如果大于1,系统已经超出负荷。 |
- 第二行
Tasks: 95 total | 系统中的进程总数 |
1 running | 正在运行的进程数 |
94 sleeping | 睡眠的进程 |
0 stopped | 正在停止的进程 |
0 zombie | 僵尸进程。如果不是0,需要手工检查僵尸进程 |
- 第三行
Cpu(s): 0.1%us | 用户模式占用的CPU百分比 |
0.1%sy | 系统模式占用的CPU百分比 |
0.0%ni | 改变过优先级的用户进程占用的CPU百分比 |
99.7%id | 空闲CPU的CPU百分比 |
0.1%wa | 等待输入/输出的进程的占用CPU百分比 |
0.0%hi | 硬中断请求服务占用的CPU百分比 |
0.1%si | 软中断请求服务占用的CPU百分比 |
0.0%st | st(Steal time)虚拟时间百分比。就是当有虚拟机时,虚拟CPU等待实际CPU的时间百分比。 |
- 第四行
Mem: 625344k total | 物理内存的总量,单位KB |
571504k used | 已经使用的物理内存数量 |
53840k free | 空闲的物理内存数量,我们使用的是虚拟机,总共只分配了628MB内存,所以只有53MB的空闲内存了 |
65800k buffers | 作为缓冲的内存数量 |
- 第五行
Swap: 524280k total | 交换分区(虚拟内存)的总大小 |
0k used | 已经使用的交互分区的大小 |
524280k free | 空闲交换分区的大小 |
409280k cached | 作为缓存的交互分区的大小 |
- 第六行(空行)
- 第七行
PID — 进程id
USER — 进程所有者
PR — 进程优先级
NI — nice值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR — 共享内存大小,单位kb
S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU — 上次更新到现在的CPU时间占用百分比
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的CPU时间总计,单位1/100秒
COMMAND — 进程名称(命令名/命令行)
网络相关
netstat -anp # 此命令用来显示整个系统目前的网络情况。例如目前的连接、数据包传递数据、或是路由表内容
netstat -anp | grep 50070 # 查看端口50070的使用情况
压缩和解压相关
http://blog.51cto.com/dingtongxue1990/1703021
# gzip/gunzip压缩 gzip + 文件
# 1.只能压缩文件不能压缩目录;2.且不保留原来文件
gzip test.txt # 压缩
gunzip test.txt.gz # 解压
# zip/unzip压缩 zip + 参数 + XXX.zip + 将要压缩的内容
# 1.可以压缩目录;2.保留原来文件
zip test.zip test1.java test2.java # 压缩test1.java,test2.java
unzip test.zip # 解压
cd /usr/local/tomcat9/webapps/web
zip -r html.zip * # 压缩目录
cd /var/lib/mysql/backup/topdb_online
zip -r ./Top_Online.git.zip ./Top_Online.git # 压缩目录
unzip Top_Doc.git.zip
# tar打包 tar + 参数 + XXX.tar.gz + 将要打包进去的内容
# 参数:
# -z 打包同时压缩
# -x 解包.tar文件
# -c 产生.tar打包文件
# -v 显示详细信息
# -f 指定压缩后的文件名
tar -zcvf test.tar.gz test1.java test2.java # 打包
tar -zcvf test.tar.gz test # 压缩目录
tar -zxvf test.tar.gz # 解压到当前目录
tar -zxvf test.tar.gz -C /opt # 解压到/opt
服务相关
service network status # 查看network服务的状态
service network stop # 停止network服务
service network start # 启动network服务
service network restart # 重启network服务
service --status-all # 查看系统中所有的后台服务
# chkconfig 对服务的开启管理
chkconfig # 查看所有服务器自启配置
chkconfig iptables off # 关掉防火墙服务的开机自启动
chkconfig iptables on # 开启防火墙服务的开机自启动
系统定时任务相关
service crond start # 启动服务
service crond stop # 关闭服务
service crond restart # 重启服务
service crond reload # 重新载入配置
crontab -e # 编辑crontab定时任务
30 0 * * * /usr/local/batch/sync_data_online.sh # 每天0:30执行命令
0 3 * * 1 /usr/local/batch/market/sync_data_online.sh # 每周一的3:00执行命令
0 5 1,15 * * /usr/local/batch/test.sh # 每月1号和15号的凌晨5点0分执行命令
40 4 * * 1-5 /usr/local/batch/test.sh # 每周一到周五的凌晨4点40分执行命令
*/10 4 * * * /usr/local/batch/test.sh # 凌晨4点每隔10分钟执行一次
0 0 1,15 * 1 /bin/echo "11" >> /tmp/test # 每月1号和15号,每周1的0点0分执行命令。(星期几和几号最好不要同时出现,容易出现混乱)
cat /etc/crontab # 查看定时任务文件
cat /var/spool/cron/root # 查看root用户下的定时任务
/var/log/cron # 定时任务的log路径
格式:* * * * * 执行的任务
项目 | 含义 | 范围 |
第一个“*” | 一小时当中的第几分钟 | 0-59 |
第二个“*” | 一天当中的第几小时 | 0-23 |
第三个“*” | 一个月当中的第几天 | 1-31 |
第四个“*” | 一年当中的第几月 | 1-12 |
第五个“*” | 一周当中的星期几 | 0-7(0和7都代表星期日) |
特殊符号 | 含义 |
* | 代表任何时间。比如第一个“*”就代表一小时中每分钟都执行一次的意思。 |
, | 代表不连续的时间。比如“0 8,12,16 * * * 命令”,就代表在每天的8点0分,12点0分,16点0分都执行一次命令 |
- | 代表连续的时间范围。比如“0 5 * * 1-6命令”,代表在周一到周六的凌晨5点0分执行命令。 |
*/n | 代表每隔多久执行一次。比如“*/10 * * * * 命令”,代表每隔10分钟就执行一遍命令。 |
RPM
RPM(RedHat Package Manager),Rethat软件包管理工具,是Linux这系列操作系统里面的打包安装工具。
Apache-1.3.23-11.i386.rpm
- “apache” 软件名称
- “1.3.23-11”软件的版本号,主版本和此版本
- “i386”是软件所运行的硬件平台
- “rpm”文件扩展名,代表RPM包
# 查询
rpm -qa # 查询安装的所有rpm软件包
rpm -qa | grep mysql # 检测是否存在mysql包
# 卸载
rpm -e firefox
rpm -e --nodeps firefox # 不管冲突,强制卸载
# 安装
# -i=install,安装
# -v=verbose,显示详细信息
# -h=hash,进度条
# --nodeps,不检测依赖进度,不管冲突,强制安装
rpm -ivh firefox-45.0.1-1.el6.centos.x86_64.rpm
rpm -ivh --nodeps firefox-45.0.1-1.el6.centos.x86_64.rpm
Yum
# -y yes
yum install -y xxx
yum install -y openssl openssl-devel
yum -y remove xxx
yum erase xxx # 删除库
下载
wget http://nginx.org/download/nginx-1.14.0.tar.gz