#1024程序员节 | 征文#
一年一度的1024~来发一下shell的重要命令啦~,新手学习过程!希望对你们有帮助,部分可深入内容后面会补充,想参加活动的同鞋请看上面的链接~,该篇花费了很多精力,请大家多多支持~
如果对你有帮助,请点个免费的赞吧,谢谢汪。(点个关注也可以!)\n\n如果以下内容需要补充和修改,请大家在评论区交流~
思维导图
目录
ps-ajx PPID PID PGID(组id) SID(会话id)
3) 删除掉源文件后,即使创建一个和源文件同名的文件,也和硬链接文件之间不存在链接关系
5) 拷贝目录的软链接可以直接拷贝,如果需要拷贝普通文件的软链接文件,需要加上-d参数保证链接属性仍然存在
1.进程管理命令
进程:是程序的一次运行过程,动态的
程序:存放在磁盘空间上的可执行文件,静态的(存放在空间上的源码,可能都不叫程序)
1.1. ps查看进程状态
ps-aux:查看所有进程的状态
USER(用户) PID(进程id) %CPU %MEM VSZ RSS TTY() STAT START TIME COMMAND
ps-ef 可以查看父进程id(PPID)
ps-ajx PPID PID PGID(组id) SID(会话id)
动态的显示进程状态
top
1.2 进程管理
可执行文件 &:将进程在后台运行起来
R
fg 编号:将后台运行的进程拉到前台运行
+R
Ctrl z:将前台运行的进程暂停的同时放到后台
T
bg 编号:将后台暂停的进程在后台跑起来
1.3 manps
进程状态:
D uninterruptible sleep (usually IO)不可中断睡眠态
R running or runnable (on run queue)运行态
S interruptible sleep (waiting for an event to complete)可中断睡眠态
T stopped by job control signal停止态
t stopped by debugger during the tracing调试器打断
X dead (should never be seen)死亡态
Z defunct ("zombie") process, terminated but not reaped by its
parent僵尸态
< high-priority (not nice to other users)高优先级
N low-priority (nice to other users)低优先级
L has pages locked into memory (for real-time and custom I
锁定到内存中
s is a session leader 会话组组长
l is multi-threaded (using CLONE_THREAD, like NPTL pthread
do)线程
+ is in the foreground process group前台进程
1.4 NI PR进程优先级
在进程管理中,NI通常表示进程的Nice值(Nice Value)。Nice值是用来调整进程优先级的参数,它可以影响进程在系统中的调度顺序
Nice值通常是一个整数,在大多数操作系统中,它的范围通常是-20到+19。较小的Nice值表示进程的优先级较高,而较大的Nice值表示进程的优先级较低
NI:优先级 +19 ~ -20 值越小,优先级越高
PR:20 + NI
在进程管理中,PR通常表示进程的优先级(Priority)。进程优先级是操作系统用来管理和调度进程的一种机制。每个进程都有一个与之相关联的优先级,用于确定进程在系统中的调度顺序。
renice:修改正在运行进程的优先级
sudo renice -n num PID
num:修改进程优先级的值
PID:要修改的进程的id号
-ajx查询:
nice:已指定优先级运行程序
sudo nice -n num./可执行文件
-ajx查询:
如果要把nice值修改
sudo renice -n 10 3157
pr值变成30,状态变成RN
如果想把程序状态改成RN+,把进程拉到前台执行:
fg 编号
1.5. kill:发送信号
一般要在前面加上sudo
kill-l:查看linux下的信号
2) SIGINT ctrl+c 结束进程
3) SIGQUIT 退出
4) SIGILL 结束进程
9) SIGKILL 杀死进程 不可忽略信号
10) SIGUSR1 未定义功能
12) SIGUSR2 未定义功能
13) SIGPIPE 管道破裂信号
14) SIGALRM 时钟信号
17) SIGCHLD 子进程状态发生改变会给父进程发送
19) SIGSTOP 停止 不可忽略信号
kill num PID:给指定进程发送num号信号
不写num默认为9,num表示以上选项
2.文件系统命令
2.1. 文件系统类型
磁盘文件系统:
指本地主机中实际可以访问到的文件系统,包括硬盘、CD-ROM、DVD、USB存储器、磁盘阵列等。常见文件系统格式有:autofs、coda、Ext(Extended File sytem,扩展文件系统)、Ext2、Ext3、VFAT、ISO9660(通常是CD-ROM)、UFS(Unix File System,Unix文件系统)、ReiserFS、XFS、JFS、FAT(File Allocation Table,文件分配表)、FAT16、FAT32、NTFS(New Technology File System)等;
网络文件系统:
是可以远程访问的文件系统,这种文件系统在服务器端仍是本地的磁盘文件系统,客户机通过网络远程访问数据。常见文件系统格式有:NFS(Network File System,网络文件系统)、Samba(SMB/CIFS)、AFP(Apple Filling Protocol,Apple文件归档协议)和WebDAV等;
专有/虚拟文件系统:
不驻留在磁盘上的文件系统。常见格式有:TMPFS(临时文件系统)、PROCFS(Process File System,进程文件系统)和LOOPBACKFS(Loopback File System,回送文件系统)。
2.2. Linux文件系统
2.3. 文件操作相关命令
file 文件名:查看文件属性信息
64位,
d3动态链接库
4:gcc版本
5:没有链接
a.out:文件名
ELF:类型
64-bit LSB shared object:小端存储
x86-64:64位操作系统
version 1 (SYSV):版本
dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2:动态链接的库
BuildID[sha1]=929170c6441faf1ed8244921a012c77550a8584a:动态ID
for GNU/Linux 3.2.0:gcc编译器的版本
not stripped: 文件没有被压缩
cat文件名:将文件内容输出到终端
cat -n 文件name:输出显示行号
find查找文件
格式:find 路径 -name "文件名"-->从路径往后查询文件
find ~/ -name*.c
练习:查找家目录下所有的a.out并计数:使用管道以及wc-l
find~/-namea.out|wc-l
grep查询指定字符串
grep "字符串" 文件名:在一个文件中查找
grep "字符串" 路径 -nR:嵌套查找,递归从路径往后查找,找到所有用这个字符串的文件
-n:回显查找到的行数
-R:查找路径可以是目录,-R会进行递归查找
-i:不区分大小写的查找
3. 硬链接和软连接(符号链接)

3.1 硬链接
硬链接文件可以理解为文件的副本(可以理解为复制粘贴)
2个文件不论改变哪一个另外一个都会随之改变
ln根据Linux系统分配给文件inode(ls -li)号进行建立,建立的副本无法跨越文件系统。
格式:ln被链接的文件(源文件)生成链接文件(目标文件)
1) 硬链接的属性-源文件相同,相当于文件的别名
2) 源文件删除链接文件依然存在
3) 删除掉源文件后,即使创建一个和源文件同名的文件,也和硬链接文件之间不存在链接关系
4) 不能去链接目录
5) 修改其中一个文件,2个文件内容都变化
6) 硬链接文件和源文件拥有相同的inode号
3.2 软连接
理解为wins下的快捷方式
ln-s利用文件的路径名建立的,最好从绝对路径开始
格式:ln -s 被链接的文件(源文件)生成链接文件(目标文件)
1) 软连接文件属性l相当于快捷方式
2) 源文件删除,链接断开,建立源文件之后重新链接
3) 软连接可以链接目录
4) 修改内容都变化
5) 拷贝目录的软链接可以直接拷贝,如果需要拷贝普通文件的软链接文件,需要加上-d参数保证链接属性仍然存在
cp -d 软连接文件(普通文件) 路径
3.3 硬链接和软连接的区别
首先,从使用的角度讲,两者没有任何区别,都与正常文件访问方式一样,支持读写,如果是可执行文件的话也可以直接执行
区别在与底层原理上
本质区别:
硬链接:本质上是同一个文件
软连接:本质上不是同一个文件
跨设备区别:
硬链接:不支持
软连接:支持
inode区别:
硬链接:相同
软连接:不同
连接数:
硬链接:创建新的硬链接,连接数会增加,删除硬链接,链接数减少
软连接:创建或删除,链接数不会变化
文件夹:
硬链接:不支持
软连接:支持
4 . 解压和压缩
4.1 gzip 与 gunzip
特点:
只能对单个的普通文件进行压缩或解压。
不能进行归档,压缩后或解压后源文件都不存在。
压缩后生成压缩格式为.gz 格式
压缩:
gzip文件名 -->默认生成:文件名.gz压缩文件
源文件消失
解压:
gunzip文件名.gz --->默认解压为:文件名
压缩不了目录
4.2 bzip2与bunzip2(特点和gzip相似)
压缩后生成压缩格式为 .bz2 格式
压缩:bzip2 文件名 -->默认生成:文件名.bz 压缩文件
解压:g 文件名.gz --->默认解压为:文件名
4.3 xz与unxz(特点和gzip相似)
压缩后生成压缩格式为 .xz 格式
压缩:xz 文件名 -->默认生成:文件名.xz 压缩文件
解压:unxz 文件名.xz --->默认解压为:文件名
4.4 zip 与 unzip
zip命令用于将一个或多个文件压缩成单一的压缩文件.zip
注意:
1)具有归档功能,并进行压缩
2)可以压缩文件夹,后缀为.zip。压缩文件夹需加-r
3)压缩或者解压后源文件依然存在
压缩:zip压缩文件名要压缩的文件列表
4.5 tar
选项:
-c:创建一个新的归档文件
-v:显示归档和释放的过程信息
-x:释放归档文件
-f:用户指定归档文件的文件名,否则使用默认名称
-t:列出tar归档文件中包含的文件或目录
-j : 由tar生成归档,然后由bzip2压缩 .bz2
-z : 由tar生成归档,然后由gzip压缩 .gz
-J : 由tar生成归档,然后由xz压缩 .xz
注意:
1)具有归档功能,并通过选项可以进行压缩或解压
2)压缩或解压后源文件存在
3)需要写全压缩或解压的文件名格式:
压缩文件名.tar.压缩格式
命令格式:
tar 选项 压缩(解压)文件名 要压缩的文件列表
组合:
tar-cvjf file.tar.bz2 *
tar-cvJf file.tar.xz *
tar-cvjf file.tar.bz2 *
tar-cvJf file.tar.xz *
tar-cvzf file.tar.gz *
注:tar -cvf filr.tar *--->只归档不压缩
解压:tar -xvf xxx.tar.压缩格式
到这里本篇先结束啦,请大家多交流,多练习哦,希望对你有帮助。
如果可以请给个免费的赞吧