///////////////////////////////////////系统查询
0、帮助命令 man
#man + 查看的命令
========================
1、查看内核和系统版本
(1)查看系统内核名称,主机名,内核版本号等
#uname -a
#uname -r ( 内核版本号)
(2)查看内核版本号
#cat /proc/version
补充说明:
/proc文件系统,它不是普通的文件系统,而是系统内核的映像。也就是说,该目录中的文件是存放在系统内存之中的,它以文件系统的方式为访问系统内核数据的操作提供接口。而我们使用命令“uname -a"的信息就是从该文件获取的,当然用方法二的命令直接查看它的内容也可以达到同等效果.另外,加上参数"a"是获得详细信息,如果不加参数为查看系统名称。
(3)查看当前系统版本的 详细信息
#cat /etc/*-release
========================
2、查看编译器版本号
#gcc -v
#g++ -v
#arm-linux-gcc -v
========================
3、当前登入主机的用户终端信息
#who
=======================
4、查看本机系统所有的登陆记录
#last
--以日志的方式存储在系统
========================
5、显示历史执行过的命令
(1)显示最近的1000条命令记录; /etc/profile 修改数量
#history
(2)清除当前用户的linux命令历史记录
#history -c
(3)重复执行某一次的命令
#“!编码数字”
@历史命令保存在用户目录的.bash_history中。
@以.点开头的文件大多数为系统文件。
========================
6、获取网卡配置与网络状态等信息
#ifconfig +网络设备+参数
@显示信息有:网卡名称,IP地址,硬件地址AC,子网掩码,广播地址,RX,TX的接收数据包和发送数据包。
========================
7、查看系统的负载信息
#uptime
22:54:59 up 1:22, 2 users, load average: 0.09, 0.05, 0.01
当前系统时间 系统已运行时间 启用终端数量 平均负载值-压力情况-(最好小于1)(最近1分钟,5分钟,15分钟)
========================
8、显示当前系统内存使用情况
#free -h
@用来检查是否因为资源耗尽而宕机。
========================
9、查看系统状态(CPU, 内存)
#top
# top -d 1 //以1s的间隔刷新显示
#top -d 1 -p 1299,1297 //以1s的间隔刷新显示指定的两个进程1297和1299
Linux系统可以通过top命令查看系统的CPU、内存、运行时间、交换分区、执行的线程等信息。
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。
top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止. 比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定.
@第三行为cpu数据:
“用户空间占用CPU百分比”、“内核空间占用CPU百分比”、“用户空间内改变过优先级的进程占用CPU百分比”、“空闲CPU百分比”、“等待输入输出CPU时间百分比”、“CPU服务于硬件中断所耗费的时间总额”、“CPU服务软中断所耗费的时间总额”、“Steal Time”
========================
10、查看Linux磁盘空间大小
(1)fdisk工具是分区工具;
(2)df是用来查看文件系统(分区)的使用情况的!
当用来查看分区信息时,较为相似:
fdisk侧重于显示分区表的信息;
df侧重于显示当前系统中所有文件系统的信息;
(3)du的英文原义为“disk usage”,含义为显示磁盘空间的使用情况,统计目录(或文件)所占磁盘空间的大小。该命令的功能是逐级进入指定目录的每一个子目录并显示该目录占用文件系统数据块(1024字节)的情况。若没有给出指定目录,则对当前目录进行统计。
常用用法:
(1)fdisk -l /dev/sda 查看当前的磁盘分区信息(主要是分区表信息)
Disk /dev/sda1: 15.4 GB, 15358492672 bytes
255 heads, 63 sectors/track, 1867 cylinders, total 29997056 sectors
(2)fdisk /dev/sda 对磁盘/dev/sda进行分区操作
(3)df -lh 查看当前文件系统分区信息,包括容量大小、使用情况、挂载点
Filesystem 容量 已用 可用 已用% 挂载点
/dev/hda8 11G 6.0G 4.4G 58% /
(4)du -ah + 路径 //-a递归显示 -s 总数; -b字节; -k 1024字节为单位
========================
11、收集系统配置及架构信息并输出诊断文档
#sosreport
@生成压缩文件及校验码,可以发给技术支持人员。
///////////////////////////////////////////////////系统查询和控制
1、添加用户和设置命令+删除用户+切换到超级用户
#useradd/adduser + 用户名 添加用户
#passwd + 用户名 修改用户密码
#su root 切换到超级用户
#userdel -r +用户名 删除用户
成功创建一个新用户以后,在/etc/passwd文档中就会增加一行该用户的信息,其格式如下:
〔用户名〕:〔密码〕:〔UID〕:〔GID〕:〔身份描述〕:〔主目录〕:〔登陆Shell〕
/etc/shadow保存的是账号的密码等信息,密码不是明文而是加密后的密码。
/etc/passwd只有系统管理员才可以修改的,其他用户可以查看,/etc/shadow其他用户看不了。
========================
2、终止当前命令 和 退出 >
终端上错输i'm,进入>输入模式,退出方法:
电脑上: #Ctrl + c // Ctrl + d =退出当前shell
开发板: #Ctrl + d
(1)ctrl-d 不是发送信号,而是表示一个特殊的二进制值,表示 EOF。
@在shell中,ctrl-d表示推退出当前shell.
(2)
ctrl+c和ctrl+z都是中断命令,但是他们的作用却不一样.
ctrl+c是强制中断程序的执行,进程已经终止。
ctrl+z的是将任务中止(暂停的意思),但是此任务并没有结束,他仍然在进程中他只是维持挂起的状态,用户可以使用fg/bg操作继续前台或后台的任务。
fg命令重新启动前台被中断的任务,bg命令把被中断的任务放在后台执行.
例如:当你vi一个文件,如果需要用shell执行别的操作,但是你又不打算关闭vi,因为你得存盘推出,你可以简单的按下ctrl+z,shell会将vi进程挂起~,当你结束了那个shell操作之后,你可以用fg命令继续vi你的文件。
=======
git commit --amend
在ubuntu中退出编辑使用命令 ctrl+Z==ctrl X ==
======
=====================
3、系统后台执行命令
#执行命令+&
=====================
4、重启系统
#reboot
=======================
5、关闭系统
#poweroff
#shutdown -h now
=======================
6、终端清除显示
#clear
=======================
7、终端输出字符串或变量提取后的值
格式:
#echo test
#echo "test"
#echo $SHELL
#echo "do you best" >> "test.txt" //在文档最后追加
======================
8、查看系统进程状态:
@ps -aux
@ps -aux | grep firefox //指定进程
@进程状态: 运行; 中断;不可中断;僵死;停止;
R-运行:
S-中断:进程处于休眠,接收到信号则脱离;
D-不可中断:kill命令不能中断;
Z-僵死:进程终止,但描述符依然存在,直到父进程调用wait4()系统函数后将进程终止。
T-停止:进程收到停止信号后,停止运行。
root@virtualBox:~$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 183140 4440 ? Ss 00:47 0:06 /sbin/init splash
root 2 0.0 0.0 0 0 ? S 00:47 0:00 [kthreadd] root 3 0.4 0.0 0 0 ? S 00:47 4:31[ksoftirqd/0]
进程所有者;
进程PID号;
运算器占用率;
虚拟内存使用量KB;
占用的固定内存量;
所在终端;
进程状态;
被启动时间;
实际使用CPU时间;
命令名称与参数;
=======================
9 查看指定服务进程的PID值:
@pidof +参数+ 服务名称
#pidof sshd
=======================
10、强制杀掉 杀掉指定进程++杀掉多个同名进程
# ps
# kill -9 + cmd_PID
# killall -9 + cmd_name
===================Kill
@kill用来终止某个指定PID的服务进程。
@kill – send a signal to a process,其实kill就是给某个进程id发送了一个信号。
@格式: kill + 参数+进程PID
kill -9 1069
(1)kill命令可以给进程发出64种不同的信号,可以用下面的命令列出所有可用的信号。
kill -l
kill命令最常见的5种信号如下:
=======kill
@(kill pid) 、( kill -15 pid)
默认参数下,kill 发送SIGTERM(15)信号给进程,告诉进程,你需要被关闭,请自行停止运行并退出。
系统会发送一个SIGTERM的信号给对应的程序。当程序接收到该signal后,将会发生以下的事情
大部分程序接收到SIGTERM信号后,会先释放自己的资源,然后在停止。但是也有程序可以在接受到信号量后,做一些其他的事情,并且这些事情是可以配置的。
如果程序正在等待IO,可能就不会立马做出相应。也就是说,SIGTERM多半是会被阻塞的、忽略。
@kill -9
发送SIGKILL信号给进程,告诉进程,你被终结了,请立刻退出。
TERM(或数字9)表示“无条件终止”;
因此 kill - 9 表示强制杀死该进程;与SIGTERM相比,这个信号不能被捕获或忽略,同时接收这个信号的进程在收到这个信号时不能执行任何清理。
===================killall
@killall 命令用于终止指定名称的服务所对应的全部进程。– kill processes by name
即,通过指定进程名的方式杀死进程。
@格式killall +参数+进程名称
killall httpd
@复杂的服务程序有多个进程协同为用户服务,批量结束全部进程,省去麻烦。
=======================
11、显示及设置系统的时间或日期date
(1)按照默认格式查看当前系统时间
#date
(2)按照“年-月-日 时-分-秒”的格式查看当前系统时间
#date "+%Y-%m-%d %H-%M-%S"
(3)设置系统时间:
#date -s "20190310 21:57:50"
(4)查看今天是当年中第几天
#date +%j
===============参数:
%Y 年
%m 月
%d 日
%H 小时 0-23
%I 小时0-12
%M 分钟0-59
%S 秒0-59
%J 今年中的第几天
=======================
12 在终端中下载网络文件
#wget + 参数+下载地址
参数:
-b 后台下载模式
-P 下载到指定目录
-p 下载页面中所有资源,包括图片、视频等
-r 递归下载
/////////////////////////////////////// 工作目录操作
1、显示当前工作目录
#pwd
===============
2、切换工作路径
#cd [指定目录]
#cd .. //返回上一级
#cd - //
#cd ~ //用户家目录
==============
3、显示目录文件信息
#ls [选项] [文件/目录]
#ls -al //全部隐藏文件,包括其属性、大小等信息
#ls -ld /etc //-d 查看目录属性
#ls -lR //包括子文件下的子文件都显示出来
#find -type d //显示子文件夹,包括子文件夹下的子文件夹
#ls -l |grep '^d' //只显示子文件夹
----统计文件夹下面文件的个数
//“^-”是一个正则化项,表示字符串的第一个字符
#ls -l | grep “^-” | wc -l
#find -type f |wc -l
----统计文件夹下面文件的个数,包括子文件
#ls -lR | grep “^-” | wc -l
----统计文件夹下面目录的个数
#ls -l | grep “^d” | wc -l
----统计文件夹下面目录的个数,包括子目录
#ls -lR | grep “^d” | wc -l
/////////////////////////////////////// 文本查看
1、查看纯文本文件(小文件)
#cat -n test.txt // -n显示行号
==============
2、查看纯文本文件(大文件)
#more [选项] [文件] //空格或回车翻页
==============
3、查看纯文本文件的前N行
#head -n 20 mkimage.sh
==============
4、查看纯文本文件的最后N行
#tail -n 20 mkimage.sh
@持续刷新一个文件的内容,可用在实时查看日志:
#tail -f log.cat
==============
5、替换文本文件中的字符
#tr [原始字符] [目标字符] //text replacement
#cat mkimage.sh | tr [a-z] [A-Z] //文件中的英文全部替换为大写
==============
6、统计指定文本的行数、字节数、字符数
#wc [参数] [文本]
#wc -l /etc/passwd
//passwd用来保存系统账户信息,每行代表一个账户,这个命令可以统计账户个数。
// -l 显示行数; -w单词数; -c 字节数
==============
7、查看文件的存储和时间等信息
#stat + [文件名称]
=====查看具体文件类型
#file + 文件名
==============
8、用于按列提取文本字符
#cut -d: -f1 /etc/passwd
//passwd中用户信息的每一项值之间都用冒号间隔,可以用来提取出passwd的用户名信息。
@-d 用来设置间隔符; -f 用来设置要看的第几列;
==============
9、比较多个文本文件的差异
#diff --brief A.txt B.txt //确认两个文件是否不同
#diff -c A.txt B.txt //列出两个文件的具体不同
////////////////////////////////文件目录管理
1、创建空白文档
#touch [文件]
==========
2、设置文件的时间
#touch -d "2019-03-10 12:20"
文件内容修改时间mtime; 文件读取时间atime; 文件权限或属性修改时间ctime;
-a 仅修改-读取时间 atime
-m 仅修改-修改时间 mtime
-d 修改atime和mtime
=========
3、创建目录
#mkdir [选项] [目录]
#mkdir -p /a/b/c/d //-p 递归创建出具有嵌套关系的目录
==========
4、复制文件或者目录
#cp [选项] 源文件 目标
[1]目标为目录或者不存在的文件:正常复制
[2]目标为普通文件:会询问是否覆盖
==========
5、移动文件或者重命名文件
#mv [选项] 源文件 [目标路径|目标文件名]
@同一个目录下对文件进行mv操作,是对其重命名。
==========
6、删除文件或目录
#rm -f [文件] //-f 强制删除,省去系统询问
#rm -rf [目录] //-r 删除目录
=========
7、按指定大小和个数的数据块来复制文件或转换文件
#dd [参数]
#dd if=/dev/zero of=file_out count=1 bs=10M
//dev/zero不占用系统存储空间,却可以提供无穷无尽的数据.
#dd if=/dev/cdrom of=ubuntu-14.04.5-desktop-amd64.iso
//把光驱设备中的光盘制作成iso格式的镜像文件.
参数:
[1]if 输入的文件
[2]of 输出的文件
[3]bs 每个块的大小
[4]count 要复制块的个数
=========
///////////////////////////////////////查找和打包
1、查找文件或目录
@find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等。
find:“在某个地方按某个规则找某个东西”
find+path+expression==find 路径+选项+描述
(1)find 查找某个文件
【1】按照文件名查找:
使用-name的选项时,可用*或者?通配符对文件名表示。
#find / -name inittab*
#find ./ -name ‘qiong*.c’
【2】按照文件特征查找
#find / -amin -10 # 查找在系统中最后10分钟访问的文件(access time)
【3】使用混合查找方式查找文件
参数:!,-and(-a),-or(-o)
#find / -user fred -or -user george #在/目录下查找用户是fred或者george的文件文件
(2)find 查找某个文件中的内容
#find . -name "*.c" | xargs grep "Protected Ports"
(3)对搜索结果进一步处理 -exec …… {} \;
# find / -user build -exec cp -a {} /root/findresults/ \;
@整个系统中找出属于build用户的文件,并复制到指定目录下。
========================
2、查找某个文本文件中的内容
grep
@grep是根据文件的内容进行查找,会对文件的每一行按照给定的模式(patter)进行匹配查找
#grep -rn magic /usr/src #显示/usr/src目录下的文件(包含子目录)包含magic的行
#grep 'test' d* #显示所有以d开头的文件中包含 test的行
#grep /sbin/nologin /etc/passwd //用户的登录终端被设成nologin,不再被允许登录系统。
====================================
3、对文件和文件夹进行打包压缩和解包
tar
@区别打包和压缩:
打包是将一些文件或目录编程一个总的文件。而压缩则是将一个大的文件压缩成小文件。
**linux中很多压缩程序如gzip只能针对一个文件进行压缩。想要压缩较多文件时,要借助tar工具将这些堆文件先打成一个包,然后再用压缩程序进行压缩。
@语法:
tar +选项+打包后文件名 [+文件目录列表]
tar +选项+打包后文件名 [-C 解压目录] //没有 “-C 解压目录 ”则表示解压在当前目录
@参数:
-c 建立新的打包文件 compact
-x 从打包文件中解出文件
-v 处理过程中输出相关信息 **
-f 对普通文件操作 **
-z 调用 gzip 来压缩打包文件,与 -x联用 时调用 gzip 完成解压缩
-j 调用 bzip2 来压缩打包文件,与 -x联用 时调用 bzip2 完成解压缩
【1】tar -zxvf x.tar.gz -C X X是打算解压的目标路径。
@后面不要加-C和路径,直接默认解压当前路径。
【2】tar -jxvf x.tar.bz2 -C X
【3】tar -jcvf x.tar.bz2 +* ( 要打包的目录/文件 )
【4】tar -zcvf x.tar.gz + * ( 要打包的目录/文件 )
@tar -zxvf XX.tar.gz ./ 会报错。。。解决方法
使用tar解压文件到指定目录时出现
Not found in archive
Exiting with failure status due to previous errors
是因为没有设置-C这个参数(create),解压后的文件只有
通过设置-C(注意要大写)这个参数,才能指定要解压的目的文件夹。
不带上-C,则可以解压,默认解压在当前目录下。
=============
Window下的常见压缩文件.zip和.rar
【5】.zip
#zip all.zip *.jpg //将所有.jpg的文件压缩成一个zip包
#unzip all.zip //将all.zip中的所有文件解压出来
【6】.rar (安装库 RAR for linux)
# tar -xzpvf rarlinux-3.2.0.tar.gz
# cd rar
# make
# rar a all *.jpg //将所有.jpg的文件压缩成一个rar包,名为all.rar,该程序会将.rar
扩展名将自动附加到包名后。
# unrar e all.rar //这条命令是将all.rar中的所有文件解压出来