linux作为个人工作经常使用的系统、做下简单的记录方便以后工作参考。
ps命令用于报告系统某个时间内进程的情况
1 2 3 4 5
| -A : 所有的进程均显示出来 -a : 不与terminal有关的所有进程 -u : 有效用户的相关进程 -x : 一般与a参数一起使用,可以列出比较完整的信息。 -l : 较详细地将PID的信息列出。
|
案例
查询某程序的情况
1 2 3
| $ [root@VM_115_109_centos ~] root 8013 17307 0 05:34 pts/0 00:00:00 grep --color=auto mysqld mysql 28882 1 0 Apr02 ? 00:07:03 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
|
UID PID PPID C STIME TTY TIME CMD (类目描述)
- UID 程序被该 UID 所拥有
- PID 就是这个程序的 ID
- PPID 则是其上级父程序的ID
- C CPU 使用的资源百分比
- STIME 系统启动时间
- TTY 登入者的终端机位置
- TIME 使用掉的 CPU 时间。
- CMD 所下达的指令
查看内存占用前1的进程
- ps auxw | head -1;ps auxw|sort -rn -k4|head -1
1 2 3
| $ ps auxw | head -1;ps auxw|sort -rn -k4|head -1 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND mysql 28882 0.0 10.9 1143416 205484 ? Sl Apr02 7:20 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
|
查看CPU占用前1的进程
- ps auxw|head -1;ps auxw|sort -rn -k3|head -1
1 2 3 4 5 6 7
| $ ps auxw|head -1;ps auxw|sort -rn -k3|head -5 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1690 0.1 0.6 536692 12436 ? Sl Apr10 29:58 barad_agent USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 9 0.0 0.0 0 0 ? R Mar08 1:45 [rcu_sched] root 884 0.0 0.0 110044 808 ttyS0 Ss+ Mar08 0:00 /sbin/agetty --keep-baud 115200 38400 9600 ttyS0 vt220 root 883 0.0 0.0 110044 788 tty1 Ss+ Mar08 0:00 /sbin/agetty --noclear tty1 linux
|
在系统维护的过程中,随时可能有需要查看 CPU和内存的使用率,并根据相应信息分析系统状况的需求。
1 2 3 4 5 6 7
| -b:以Byte为单位显示内存使用情况; -k:以KB为单位显示内存使用情况; -m:以MB为单位显示内存使用情况; -o:不显示缓冲区调节列; -s<间隔秒数>:持续观察内存使用状况; -t:显示内存总和列; -V:显示版本信息。
|
案例
1 2 3 4
| $ free total used free shared buff/cache available Mem: 16200512 5593928 4748604 9048 5857980 10196852 Swap: 8191996 0 8191996
|
- free命令默认是以kb为单位显示的,可以用free -m 用Mb单位来显示。
- Mem行 : total = used + free 其中buffers和cached虽然计算在used内, 但其实为可用内存。
- Mem下一行:used为真实已占内存,free为真实可用内存。
- Swap:内存交换区的使用情况。
显示系统整体负载
1 2 3 4 5 6 7 8 9 10
| -b:以批处理模式操作; -c:显示完整的治命令; -d:屏幕刷新间隔时间; -I:忽略失效过程; -s:保密模式; -S:累积模式; -i<时间>:设置间隔时间; -u<用户名>:指定用户名; -p<进程号>:指定进程; -n<次数>:循环显示的次数。
|
案例
- 第一行: 系统时间 + 系统运行时间 + 几个用户 + 1/5/15分钟系统平均负载
- 第二行:进程总数(total) + 正在运行进程数(running) + 睡眠进程数(sleeping) + 停止的进程数(stopped)+ 僵尸进程数(zombie)
- 第三行:用户空间CPU占比(us) + 内核空间CPU占比(sy)+ CPU空置率(id)
- 注解
- PID :进程ID
- USER :用户名
- PR :优先级
- NI :负值表示高优先级,正值表示低优先级。
- VIRT :虚拟内存
- RES : 真实内存
- SHR :共享内存
- S :进程状态 D=不可中断的睡眠状态; R=运行; S=睡眠 ;T=跟踪/停止; Z=僵尸进程
- 参数:
- top -d 2 :每隔2秒显式所有进程的资源占用情况
- top -c :每隔5秒显式进程的资源占用情况,并显示进程的命令行参数(默认只有进程名)
- top -p 12345 -p 6789:每隔5秒显示pid是12345和pid是6789的两个进程的资源占用情况
- top -d 2 -c -p 123456 :每隔2秒显示pid是12345的进程的资源使用情况,并显式该进程启动的命令行参数
env
查看环境变量;这个用的相对较少了。所以也不用太在意。
last
查看用户登录日志
1 2 3 4 5 6
| -a : 把从何处登录系统的主机名或Ip地址,显示在最后一行。 -d : 将Ip地址转换成主机名称。 -f : 指定记录文件 -n : 设置列出名单的显示列数。 -R : 不显示登录系统主机名称或Ip地址。 -x : 显示系统关机,重新开机,以及执行等级的改变信息。
|
rpm
一般用rpm -qa | grep xxx 查看所有程序的软件包,如果不做筛选的话会吧所有已经安装的程序列出来。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| -a:查询所有套件; -b<完成阶段><套件档>+或-t <完成阶段><套件档>+:设置包装套件的完成阶段,并指定套件档的文件名称; -c:只列出组态配置文件,本参数需配合"-l"参数使用; -d:只列出文本文件,本参数需配合"-l"参数使用; -e<套件档>或--erase<套件档>:删除指定的套件; -f<文件>+:查询拥有指定文件的套件; -h或--hash:套件安装时列出标记; -i:显示套件的相关信息; -i<套件档>或--install<套件档>:安装指定的套件档; -l:显示套件的文件列表; -p<套件档>+:查询指定的RPM套件档; -q:使用询问模式,当遇到任何问题时,rpm指令会先询问用户; -R:显示套件的关联性信息; -s:显示文件状态,本参数需配合"-l"参数使用; -U<套件档>或--upgrade<套件档>:升级指定的套件档; -v:显示指令执行过程; -vv:详细显示指令执行过程,便于排错。
|
mv
该命名用于移动文件、目录或更名,move之意,它的常用参数如下:
1 2 3
| -f : force强制的意思,如果目标文件已经存在,不会询问而直接覆盖。 -i : 若目标文件存在,则询问是否覆盖。 -u : 若目标文件已经存在,且比目标新文件新,才会更新。
|
案例
1 2 3
| $ echo "hello world" >> newfile.txt $ midir 001 $ ehco "are you ok" >> 001/newfile.txt
|
1 2 3
| $ mv -i newfile.txt 001/newfile.txt
|
1 2 3
| $ mv -u newfile.txt 001/newfile.txt
|
注意如果目标文件创建时间比当前文件新,会移动失败。
1
| $ mv -f newfile.txt 001/newfile.txt
|
注意了,这里并不会提示什么,会直接覆盖掉目标文件。前提是你有足够的权限。
rm
1 2 3 4 5 6
| -d:直接把欲删除的目录的硬连接数据删除成0,删除该目录; -f:强制删除文件或目录; -i:删除已有文件或目录之前先询问用户; -r或-R:递归处理,将指定目录下的所有文件与子目录一并处理; --preserve-root:不对根目录进行递归操作; -v:显示指令的详细执行过程。
|
案例
删除当前目录下的 log.txt文件
删除当前目录下所有.txt后缀的文件
使用 rm 命令删除时,会提示你是否确定删除,输入 y 即删除,输入 n 则取消
rm: remove regular file `log.txt’? y
删除当前目录下所有以 doubi开头的文件
删除当前目录下所有以 doubi开头 以.txt后缀结尾的文件
当你用 rm 删除目录的时候会发现提示这不是一个文件
1 2
| $ rm bash rm: cannot remove `bash': Is a directory
|
可以加上 -r 来归递删除目录及其目录下的内容
因为为了避免手误删除错误,所以 rm默认是加上了 -i 的参数,也就是每一次删除文件/目录都会提示,如果觉得烦可以用 -rf 参数
rm -rf 这个命令请慎重使用,而且千万不要使用 rm -rf / 或者 rm -rf /* 之类的命令(系统自杀),可能会让你系统爆炸,所以使用请慎重
更多的命令可以用 rm –help 查看。
du
查看 文件/文件夹 占用磁盘空间的大小
1 2 3 4 5 6 7
| -h :以人类易读的方式显示 -a :显示 目录占用的磁盘空间大小,并显示其下目录和文件占用磁盘空间的大小 -s :显示 目录占用的磁盘空间大小,但不显示其下子目录和文件占用的磁盘空间大小 -c :显示几个目录或文件占用的磁盘空间大小,还要统计它们的总和 --apparent-size:显示目录或文件自身的大小 -l :统计硬链接占用磁盘空间的大小 -L :统计符号链接所指向的文件占用的磁盘空间大小
|
案例
显示 /root 文件夹的大小,但不显示其子目录和文件的大小
显示 /root 文件夹的大小,并显示其子目录和文件的大小
1 2 3 4 5
| $ du -ah 182M ./jdk-8u161-linux-x64.tar.gz 8.5M ./apache-maven-3.5.3-bin.tar.gz 28K ./mysql57-community-release-el7-11.noarch.rpm 190M .
|
chmod
修改 文件|文件夹权限,linux里面的东西都是文件形式存放的。所以经常会设计到权限问题。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| -c :只输出被改变权限的文件信息 -f :当chmod不能改变文件模式时,不通知文件的用户 -R :可递归遍历子目录,把修改应到目录下所有文件和子目录 -v :无论修改是否成功,输出每个文件的信息
+ :添加某个权限。 - :取消某个权限。 = :赋予给定权限并取消其他所有权限(如果有的话)。
r :可读 w :可写 x :可执行 X :只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性 s :在文件执行时把进程的属主或组ID置为该文件的文件属主。方式“u+s”设置文件的用户ID位,“g+s”设置组ID位 t :保存程序的文本到交换设备上 u :当前用户的权限 g :当前用户同组的权限 o :其他用户的权限
0 :表示没有权限 1 :表示可执行权限 2 :表示可写权限 4 :表示可读权限
|
案例
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| chmod +x start.sh
chmod 444 start.sh
chmod 666 start.sh
chmod 777 start.sh
chmod -R 777 start.sh
|
yum
这个命令经常使用是Centos 系统中快速安装和下载的工具,当然并不是Centos专属的命令。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| update - 检索 新的包列表 upgrade - 升级 软件包 search - 搜索 软件包 install - 安装 软件包 list - 列出 软件包或者软件包组 info - 显示软件包或者软件包组的详细信息 erase - 删除 软件包(这两个命令一样) remove - 删除 软件包(这两个命令一样) groupinfo - 显示 有关包组的详细信息 groupinstall - 安装 软件包组(就像一种软件合集) grouplist - 列出 可用的软件包组 groupremove - 删除 软件包组 check - 检查 软件包 check-update - 检查 可更新的软件包 clean - 清除 缓存目录内的软件包 deplist - 列出 一个包的依赖关系 distribution-synchronization - 同步 已安装的软件包到最新的版本 downgrad - 降级 一个软件包 reinstall - 重新安装 软件包(自动删除重装) repolist - 显示 配置的软件包仓库 resolvedep - 确定 软件包需要的依赖关系
-t :容忍错误 -C :完全从系统缓存运行,不要更新缓存 -R 分钟 :最大命令等待时间 -q :安静的操作 -y :对于所有问题回答是 --nogpgcheck :禁用gpg签名检查
|
案例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| yum update
yum install nginx
yum groupinstall "Development Tools"
yum erase nginx / yum remove nginx
yum groupremove "Development Tools"
yum upgrade
yum upgrade nginx
yum install nginx -y
yum erase nginx -y / yum remove nginx -y
yum search nginx
yum list
yum grouplist
yum clean
yum clean nginx
yum reinstall nginx
|
head
这个命令主要用于查询文件头部内容,就是正查询。
1 2 3 4 5
| -c 数字:显示指定文件的前 xx 字节的内容(bytes) -n 数字:显示指定文件的前 xx 行的内容 -q :不显示包含指定文件名的文件头(当使用 head打开多个文件的时候,会去在每个文件输出结果的顶部添加一个包含文件名的文件头用于区分)
|
案例
1 2 3 4 5 6 7
| # 创建一个文件,里面的内容如下 $ touch demo.txt #在编辑内容添加数据 1 2 3 4 5
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| head log.txt
head -c 4 demo.txt
1 2
head -n 3 demo.txt
1 2 3
head -n -3 demo.txt
1 2
|
tail
一般用来查看文件尾部内容,比如要持续观察一个log输出的时候。
1 2 3
| -c 数字:如果数字为正数(例如 -c +5),显示指定文件从行首第 xx 字节到最后的内容;如果数字为负数(例如 -c -5),显示指定文件从行尾第 xx 字节到最后内容。 -n 数字:如果数字为正数(例如 -c +3),显示指定文件从行首第 xx 行到最后的内容;如果数字为负数(例如 -c -3),显示指定文件从行尾第 xx 行到最后的内容。 -f :即时输出文件变化后增加的内容,也就是监视一个文件的内容变化(常用于监视日志输出),使用 Ctrl+C 终止
|
案例
1 2 3 4 5 6 7
| # 创建一个文件,里面的内容如下 $ touch demo.txt #在编辑内容添加数据 1 2 3 4 5
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| tail demo.txt
tail -c +25 demo.txt
4 5
tail -c -2 demo.txt
5
tail -n +2 log.txt
doubi2 doubi3 doubi4 doubi5
tail -n -2 demo.txt
4 5
tail -f demo.txt
|
tar gz zip
这几个是用来解压文件的,在源码安装或者是解压的时候需要用到。
案例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| tar -xf log.tar ————————————————————————————————————————————————————————————————————————————
tar -xJf log.tar.xz ————————————————————————————————————————————————————————————————————————————
tar -xzf log.tar.gz ————————————————————————————————————————————————————————————————————————————
gzip -d log.gz gunzip log.gz ————————————————————————————————————————————————————————————————————————————
bzip2 -d log.bz bunzip2 log.bz tar -jxf log.tar.bz bzip2 -d log.bz2 bunzip2 log.bz2 tar -jxf log.tar.bz2 ————————————————————————————————————————————————————————————————————————————
uncompress log.Z log.txt uncompress log.Z log ———————————————————————————————————————————————————————————————————————————— tar xZf log.tar.Z log.txt tar xZf log.tar.Z log ————————————————————————————————————————————————————————————————————————————
unrar x log.rar ————————————————————————————————————————————————————————————————————————————
unzip log.zip
|