【1】用户管理命令

1.adduser 创建用户

sudo adduser 用户名

/etc/passwd ——> 保存用户信息
用户名:密码:用户id:组id:描述信息:主目录:解析器
/etc/group ——> 保存组信息
组名:密码:组id:添加到这个组的所有用户

2.usermod:

sudo usermod -l 新用户名 用户
将用户名修改
sudo usermod -aG 组 用户
将用户添加到对应的组

3.删除用户

sudo deluser 用户名
sudo deluser —remove-home 用户名
用户名:将用户主目录一起删除

4.删除组

sudo delgroup 组名

【2】进程操作命令

进程:程序的一次执行过程(0-4G虚拟机内存,动态的)
程序:就是可以行二进制文件(磁盘,静态)

1.查看进程 ps

ps -aux:查看进程的信息
用户 进程id TTY:运行是否依赖终端 状态 名称
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 25152 4308 ? Ss 2月13 0:06 /sbin/init splash
root 2 0.0 0.0 0 0 ? S 2月13 0:00 [kthreadd]
ps -ef:查看进程的父进程 父进程ppid
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 暂停
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 IO) 锁定到内存中
s is a session leader 会话组组长
l is multi-threaded (using CLONE_THREAD, like NPTL pthreads do) 多线程
+ is in the foreground process group 前台进程
ps -ajx:查看进程id、父进程id、组id、会话id

2.top 动态显示进程的状态

shift + >
shift + <
PR:PR=NI + 20
NI:优先级 20 - - 19
值越小优先级越高

3.nice 以指定优先级运行程序

sudo nice -n num ./可执行程序 :以优先级为num运行程序
sudo nice -num ./可执行程序

4.renice 运行进程优先级修改

sudo renice num PID

5.kill 给进程发送信号

kill -l:查看linux中的信号
2)SIGINT (Ctrl + c)
9)SIGKILL 杀死进程信号
19)SIGSTOP 暂停

SIGUSR1 SIGUSR2 未定默认功能信号
kill -信号编号 PID:给指定进程发送指定信号
killall a.out:杀死所有名字为a.out

【3】文件系统命令

1.文件系统类型:

  1. 1)磁盘文件系统:硬盘、U盘<br /> 文件系统的格式有:extext2ext3ext4vfatfat32...<br /> 2)网络文件系统:nfs服务、samba<br /> 3)虚拟文件系统:tmpfs

2.文件操作

  1)file 文件名:显示文件类型<br />      2)修改文件权限<br />      -rw-rw-r-- 1 linux linux   0 Dec  9 15:46 file_1<br />       110110100转换成八进制后为<br />       664<br />      chmod 775 文件名:修改文件权限<br />      

3.链接文件

Linux中有两种类型的链接:<br />    1)**硬链接**是利用Linux中为每个文件分配的物理编号——inode建立链接。<br />        因此,硬链接不能跨越文件系统。<br />        <br />        当文件删除重建,inode不同,链接失效。<br />        硬链接不能跨越文件系统。<br />        <br />    2)**软链接**(符号链接)是利用文件的**路径名**建立链接。通常建立软链接使用<br />        绝对路径而不是相对路径,以最大限度增加可移植性。

如:
ln 目标文件 链接文件名:创建硬链接
如:ln a.c b.c //a.c是路径中有的文件,b.c是通过ln创建的硬链接文件

ln -s 目标文件 链接文件名:创建软连接
如:ln -s /home/linux/file file_link
//file文件是路径中存在的,要使用它的绝对路径

特点:
如果是修改硬链接的目标文件名,链接依然有效;
如果修改软链接的目标文件名,则链接将断开;
对一个已存在的链接文件执行移动或删除操作,有可能导致链接的断开。假如删除目标文件后,重新创建一个同名文件,软链接将恢复,硬链接不再有效,因为文件的inode已经改变。

4.压缩和解压

 **1.gzip**命令用于将一个文件压缩进行**压缩**。<br />        格式:**gzip** **要压缩的文件**<br />        **gunzip**命令用于将gzip压缩文件进行**解压**。<br />        格式:**gunzip 要解压的压缩包**<br />        注意:<br />            **1)**只能对一个普通文件进行压缩,并自后缀为**.gz**<br />            **2)**没有归档功能<br />            **3)**压缩或解压后源文件不存在<br />        举例:<br />            **$gzip  a*.c**  //路径中有a1.c a2.c a3.c,压缩后生成a1.c.gz a2.c.gz a3.c.gz<br />            **$gunzip  a1.c.gz**<br />            <br />     **2.bzip2:**功能、特点与gzip相同,只是后缀为**.bz2**<br />        **bunzip2:解压**<br />        <br />     **3.xz:**功能、特点与gzip相同,只是后缀为**.xz**<br />        **unxz:解压**<br />        <br />     **4.zip**命令用于将一个文件或多个文件压缩成单一的**压缩**文件**  .zip**<br />        格式:**zip 压缩文件名 要压缩的文件列表**<br />        **unzip**命令用于将zip压缩文件进行**解压**。<br />        格式:unzip 要解压的压缩文件<br />        注意:<br />            **1)**具有归档功能,并进行压缩<br />            **2)**可以压缩文件夹,后缀为.zip<br />            **3)**压缩或者解压后源文件依然存在<br />        举例:<br />            $zip  file.zip  file_*<br />            $unzip  file.zip<br />            $zip  -r   test.zip  test           <br />                //test目录中包含子目录时,压缩目录加上-r<br />                <br />     **5.tar:**<br />     <br />        选项:<br />            **-x :** 释放归档文件<br />            **-c :** 创建一个新的归档文件<br />            **-v :** 显示归档和释放的过程信息<br />            **-f :** 用户指定归档文件的文件名,否则使用默认名称<br />            **-j :** 由tar生成归档,然后由bzip2压缩   .bz2<br />            **-z :** 由tar生成归档,然后由gzip压缩    .gz<br />            **-J :** 由tar生成归档,然后由xz压缩      .xz<br />        注意:      <br />            **1)**具有归档功能,并通过参数可以进行压缩或解压    <br />            **2)**压缩或解压后源文件存在      <br />            **3)**需要写全压缩或解压的文件名格式:      <br />        格式:<br />            **tar   选项     压缩(解压)文件名     [要压缩的文件列表] **<br />        组合:       <br />            **-cjf :**以bz2的格式压缩文件      <br />            **-czf :**以gz的格式压缩文件  <br />            **-cJf :**以xz的格式压缩文件            <br />                注意 : jz 在f 前;   压缩后源文件依然存在      <br />            **-xvf :**解压一个压缩包;   解压后压缩包依然存在<br />        举例:     <br />            tar  -cvjf  file.tar.bz2  file*     <br />            tar  -czf  file.tar.gz  file*<br />            tar  -cJf  file.tar.xz  file* <br />              <br />            tar  -xvf  file.tar.gz  <br />            <br />            打包的时候:只用选项 -cvf  是只归档不压缩

【4】shell脚本编程

shell —》解析器 bash
shell脚本 —》shell命令的有序集合

shell脚本编程 —》解释型语言 ,不要编译

shell脚本文件的后缀是.sh
————————————————————————————————————
创建一个脚本文件步骤:
1.创建一个.sh的普通文件
touch xxx.sh
2.修改脚本文件权限
chmod 777 xxx.sh
3.编辑内容
vi xxx.sh
4.执行脚本文件
./xxx.sh 或 bash xxx.sh
练习:
1)在当前路径下创建file_1到file_5,5个普通文件
2)删除 file_2和file_3文件,(使用通配符)
3)将剩下的file文件用tar压缩成bz2的格式
4)将压缩文件复制到家目录下
5)进入到家目录解压压缩文件
6)删除压缩包
—————————————————————————————————————-

【5】shell变量

1.允许用户建立变量存储数据,但不支持数据类型(整型、字符、浮点型),将任何赋给变量的值都解释为一串字符
2.格式:
变量名=值
注意:等号左右两侧不能有空格
3.变量的分类
1)用户自定义变量
在shell编程中通常使用全大写变量,方便识别
变量的调用:在变量前加$
Linux Shell/bash从右向左赋值
如:Y=yy
X=$Y
echo $X //输出yy
使用unset命令删除变量的赋值
如:X=xx
unset X
echo $X //没有任何输出

2)位置变量或命令行参数
$0 执行的脚本
$1-$9
${10} - ${N}
$# 计算除执行脚本文件命令行参数个数
$@ 、$* 遍历除脚本文件的所有命令行内容

3)预定义变量
$? 前一句命令执行的结果
0:真 非0:假

$$ 进程pid

4)环境变量
HOME :用户主目录路径
PATH :命令的默认查找路径
添加默认查找路径:
临时:export PATH=$PATH:添加新路径
当前终端生效

永久生效:将export PATH=$PATH:添加新路径
添加到.bashrc最后。
让文件生效:source .bashrc

printenv 或env :查看环境变量