linuxC高级day2
- 系统维护命令
1、man man:查看man手册
//man手册的前三个章节
第一个章节:shell命令
第二个章节:系统调用
第三个章节:C库(库文件)
2、sudo passwd 用户名:修改用户密码
- su:切换用户
su:默认切换到root用户;
sudo su 用户名 指定切换到某用户;(sudo:临时管理员命令)
exit :退出切换的用户;
- echo"输出内容":向终端输出内容,默认换行
echo -n "输出内容" 输出不换行
5、date查看当前系统日期
date -s 年/月/日 更改当前日期
date -s 时:分:秒 更改当前时间
6、claer:清屏
7、df-Th/df -h 查看磁盘空间
二、用户管理命令
sudo adduser 用户名:添加用户
给用户添加sudo权限:
切换到超级管理员身份:sudo su
给用户添加 sudo 权限:sudo vi /etc/sudoers
添加:用户名 ALL=(ALL:ALL) ALL
sudo deluser --remove-home 用户名:删除用户
三、进程管理命令
进程:是程序的一次运行过程,是动态。
程序:存放在磁盘空间上的可执行文件,是静态
1、ps 查看进程状态
ps -aux
USER(用户) PID(进程id) %CPU %MEM VSZ RSS TTY(终端 ?:不依赖终端) STAT(状态) START TIME COMMAND
PID:是唯一标识进程的id号
ps -ef:可以查看父进程
ps -ajx: PPID PID PGID(组id) SID(会话id)
man ps
进程状态:
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前台进程
- top 动态显示进程状态
在进程管理中,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:要修改进程优先级的PID
1. 在hello.c 写一个死循环 并执行
2. 再开一个终端 ps -aux 找到这个正在执行的这个进程的PID
3. top 看一下当前的执行的文件的进程优先级是多少
4. sudo renice -n 优先级值 PID
5. top 看一下当前的优先级是否更改
4、nice 定制优先级运行进程
sudo nice -n num ./可执行文件
- kill发送信号
kill -l:查看信号
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信号
结束进程(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、linux文件系统
目录名 | 描述 |
/ | Linux文件系统根目录 |
/bin | 存放系统中最常用的可执行文件(二进制) |
/boot | 存放Linux内核和系统启动文件,包括Grub、lilo启动器程序 |
/dev | 存放所有设备文件,包括硬盘、分区、键盘、鼠标、USB、tty等 |
/etc | 存放系统的所有配置文件,例如passwd存放用户账户信息,hostname存放主机名等 |
/home | 用户主目录的默认位置 |
/initrd | 存放启动时挂载initrd.img映像文件的目录,以及载入所需设备模块的目录。 |
/lib | 存放共享的库文件,包含许多被/bin和/sbin中程序使用的库文件 |
/lost+found | 存放由fsck放置的零散文件 |
/media | Ubuntu系统自动挂载CD-ROM、软驱、USB存储器后,存放临时读入的文件 |
/mnt | 该目录通常用于作为被挂载的文件系统的挂载点 |
/opt | 作为可选文件和程序的存放目录,主要被第三方开发者用来简易地安装和卸装他们的软件包 |
/proc | 存放所有标志为文件的进程,它们是通过进程号或其他的系统动态信息进行标识,例如cpuinfo文件存放CPU当前工作状态的数据 |
/root | 根用户(超级用户)的主目录 |
/sbin | 存放更多的可执行文件(二进制),包括系统管理、目录查询等关键命令文件 |
/srv | 系统提供的特定数据 |
/sys | 虚拟文件系统 |
/tmp | 存放用户和程序的临时文件,所有用户对该目录都有读写权限 |
/usr | 用于存放与系统用户直接有关的文件和目录,例如应用程序及支持它们的库文件。以下罗列了/usr中部分重要的目录。 | |
/usr/X11R6: | X Window系统 | |
/usr/bin | 用户和管理员的标准命令 | |
/usr/include | c/c++等各种开发语言环境的标准include文件 | |
/usr/lib | 应用程序及程序包的连接库 | |
/usr/local | 系统管理员安装的应用程序目录 | |
/usr/local/share | 系统管理员安装的共享文件 | |
/usr/sbin | 用户和管理员的标准命令 | |
/usr/share | 存放使用手册等共享文件的目录 | |
/usr/share/dict | 存放词表的目录 | |
/usr/share/man | 系统使用手册 | |
/usr/share/misc | 一般数据 | |
/usr/share/sgml | SGML数据 | |
/usr/share/xml | XML数据 | |
/var | 通常用于存放长度可变的文件,例如日志文件和打印机文件。以下罗列了/var其中部分重要的目录。 | |
/var/cache | 应用程序缓存目录 | |
/var/crash | 系统错误信息 | |
/var/games | 游戏数据 | |
/var/lib | 各种状态数据 | |
/var/lock | 文件锁定纪录 | |
/var/log | 日志记录 | |
/var/mail | 电子邮件 | |
/var/opt | /opt目录的变量数据 | |
/var/run | 进程的标示数据 | |
/var/spool | 存放电子邮件,打印任务等的队列目录。 | |
/var/tmp | 临时文件目录 |
- 文件操作相关命令
3.1 file 文件名:查找文件属性信息
3.2 rm -f:强制删除文件:文件存不存在都会删除
rm -rf:强制删除文件夹:文件夹不存在也删除
3.3 cat 文件名:将文件内容输出到终端
cat -n 文件名:输出内容及行号
3.4 head 文件名 默认输出文件内容前十行
head -N 文件名 输出前N行内容
3.5 tile 文件名 默认输出文件内容后十行 加数字一致
3.6 find查找文件
格式:find 路径 -name “文件名”:在这个路径查找文件
3.7 grep 查找指定字符串
格式:grep "字符串" 文件名 在一个文件中查找
grep "字符串“ ./ -nR 从这个路径开始往后查找,找到所有用到了这个字符串的文件
3.8 查看文件权限 ls-li命令
3.9修改文件权限chmod
修改方法1:(参数)
语法:chmod [参数][augo][+-=][rwx]文件名
1.将文件file1.txt增加可读权限
chmod ugo+r file1.txt
2.将文件file1.txt设为所有人(all)可读
chmod a=r file1.txt
3.为ex1.py文件拥有者取消可执行权限
chmod u-x ex1.py
修改方法2:(数字)
语法:chmod abc 文件名
其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。
r=4,w=2,x=1, -=0
若要rwx属性则4+2+1=7;
若要rw-属性则4+2=6;
若要r-x属性则4+1=5。
将文件file1.txt设为可读可写可执行权限
chmod 777 file1.txt 和chmod a=rwx file1.txt 和chmod ugo=rwx file1.txt 效果相同
补充:
lscpu 显示CPU信息
free -g 显示内存使用情况
total used free shared buff/cache available
Mem: 1 1 0 0 0 0
Swap: 0 0 0
第一列:
Mem:内存的使用信息
Swap:交换空间的使用信息
第一行:
total:系统总的可用物理内存大小
used:已被使用的物理内存大小
free:还有多少物理内存可用
shared:被共享使用的物理内存大小
buff/cach:被 buffer 和 cache 使用的物理内存大小
available:还可以被应用程序使用的物理内存大小
- 硬链接和软链接
- 硬链接 ln 源文件 目标文件
ln 根据linux系统分配给文件inode号(ls -li)进行建立的,没办法去跨越文件系统的。
格式:ln 被链接的文件(源文件) 生成的一个链接文件(目标文件)
- 硬链接的属性 - 相当于生成一个副本 起别名
- 源文件删除链接文件依然存在
- 不能去链接目录
- 修改内容都变化
源文件与目标文件inode号一致
源文件删除后目标文件依然存在并且能继续使用
源文件修改内容,链接的目标文件也变化
- 软连接
ln -s (符号链接) 利用文件的路径名来建立的,最好从绝对路径开始
格式:ln -s 被链接的文件(源文件) 生成的链接文件(目标文件)
- 软连接的属性l 相当于快捷方式
- 源文件删除,链接断开,建立源文件之后重新链接
- 软连接可以链接目录
- 修改内容都变化
目录也可以被链接
- 硬链接和软链接的区别
首先,从使用的角度讲,两者没有任何区别,都与正常文件访问方式一样,支持读写,如果是可执行文件的话也可以直接执行
区别在与底层原理上:
3.1. 本质区别
硬链接:本质上是同一个文件
软连接:本质上不是同一个文件
3.2. 跨设备区别
硬链接:不支持
软连接:支持
3.3. inode区别
硬链接:相同
软连接:不同
3.4. 连接数
硬链接:创建新的硬链接,连接数会增加,删除硬链接,链接数减少
软连接:创建或删除,链接数不会变化
3.5. 文件夹
硬链接:不支持
软连接:支持
- 解压和压缩
- gzip和gunzip
特点:
只能对单个的普通文件进行压缩
不能进行归档,压缩后或解压后源文件都不存在
压缩后生成压缩格式是 .gz 格式
压缩:gzip 文件名 --->默认生成:文件名.gz 的压缩文件
解压:gunzip 文件名.gz --->默认解压为:文件名
- bzip2和bunzip2(特点和 gzip 相似)
压缩后生成压缩格式是 .bz2 格式
压缩:bzip2 文件名 --->默认生成:文件名.bz2 的压缩文件
解压:bunzip2 文件名.bz2 --->默认解压为:文件名
- xz和unxz(特点和 gzip 相似)
压缩后生成压缩格式是 .xz 格式
压缩:xz 文件名 ---》默认生成:文件名.xz 的压缩文件
解压:unxz 文件名.xz ---》默认解压为:文件名
- zip和unzip
zip 命令用于将一个文件或多个文件压缩成单一的压缩文件 .zip(可以归档)
格式:zip 压缩文件名 要压缩的文件列表
unzip命令用于将zip压缩文件进行解压
格式:unzip 要解压的压缩文件
注意:
a. 具有归档动能,并进行压缩
b. 可以压缩文件夹,后缀 .zip,压缩文件夹需要加 -r
c. 压缩或解压后源文件依然存在
- tar
选项:
-x:释放归档文件
-c:创建一个新的归档文件
-v:显示归档和释放的过程信息(进度)
-f:用户指定归档文件的文件名,否则使用默认名称 后跟文件名
-j:由 tar 生成归档,然后由 bzip2 压缩 .bz2
-z:由 tar 生成归档,然后由 gzip 压缩 .gz
-J:由 tar 生成归档,然后由 xz 压缩 .xz
注意:
1)具有归档功能,并通过参数可以进行压缩或解压
2)压缩或解压后源文件存在
3)需要写全压缩或解压的文件名格式
组合:(不会显示过程信息)
-cjf:以 bz2 的格式压缩文件
-czf:以 gz 的格式压缩文件
-cJf:以 xz 的格式压缩文件
-xvf解压一个压缩包:解压后压缩包依然存在
(显示过程信息)
-cvjf:以 bz2 的格式压缩文件
-cvzf:以 gz 的格式压缩文件
-cvJf:以 xz 的格式压缩文件
-xvvf解压一个压缩包:解压后压缩包依然存在
压缩
tar -cvjf file.tar.bz2 *
tar -cvJf file.tar.xz *
tar -cvzf file.tar.gz *
注:tar -cvf file.tar * ---》只归档不压缩