【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.删除组
【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 运行进程优先级修改
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)磁盘文件系统:硬盘、U盘<br /> 文件系统的格式有:ext、ext2、ext3、ext4、vfat、fat32...<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 :查看环境变量