一、第3章--基本bash shell 命令
1.1 链接文件
链接是linux里用于在系统上维护同一文件的两份或多份副本的一种方法,linux有两种不同链接,软链接(符号链接)和硬链接。
1.1.2 符号链接
符号链接创建方法:
ln -s a.txt a_link
符号连接特点如下:
1、a_link指向 a.txt 文件,两者是完全不同的文件,管理a_link,就是管理a.txt 。
2、符号链接创建后,用 ls -l a_link 可区别其连接到何处
3、删除软链接并不影响被指向的文件;但原文件a.txt 被删除了,a_link也无效
4、软链接有自己的文件属性及权限等
5、可对不存在的文件或目录创建软链接
6、可交叉文件系统进行软链接的创建
1.1.3 硬链接
硬链接创建方法:
ln b.txt b_link
硬链接特点如下:
1、b_link指向 b.txt 文件,相当于给b.txt起别名,两者实际是指向同一块数据空间 ,管理b_link,就是管理b.txt 。
2、硬链接创建后,用 ls -l b_link 无法区别哪一现有硬链接是原始链接
3、删除硬链接并不影响被指向的文件;且原文件b.txt 被删除了,由b_link 仍可访问b.txt 的内容,本质上是指向同一块数据空间,只有当源文件、所有硬连接都删除,才真正删除数据空间
4、硬链接无自己的文件属性及权限等
5、不可对不存在的文件或目录创建软链接
6、不可交叉文件系统进行硬链接的创建
二、第4章-- 更多 bash shell
2.1 ps命令
ps -ef : 显示所有进程,并输出一些有用的信息
UID:启动进程的用户
PID:进程的ID
PPID:进程的父进程ID
C:CPU利用率
STIME:进程启动时系统时间
TTY:进程启动时终端设备
TIME:进程启动时的系统时间
CMD:启动程序名称
使用-l ,可查看更多的进程信息 ps -LW 进程号,可看该进程的线程
例如进程状态(O:运行; S:休眠;R 等待运行;Z 僵化,进程已结束,但父进程不在; T 停止)、进程的优先级、内存地址等等
netstat -apn | grep 端口号 查看网络端口占用情况
2.2 top命令实时监测进程
top:一开始可查看近15法呢还总的平均负载,如果平均负载很高,则说明系统有问题,通常超过2,就比较繁忙了
top命令可看到的较重要信息
PID:进程ID
USER:进程属主
PR:进程优先级
S:进程的状态
%CPU:进程使用CPU时间比例
%MEM: 进程使用的内存占可用内存的比例
2.3 结束进程
进程通常使用信号进行通信,常用结束命令为kill
2.4 监测磁盘空间
2.4.1 mount命令
查看磁盘剩余空间,避免应用程序不够用,mount命令输出当前系统挂载的设备列表
2.4.2 df 命令
df 可查看磁盘挂载点上磁盘空间的使用情况
2.4.3 du 命令
df 查看挂载点空间,如果空间剩余少了,可使用du进一步查看是什么占用了内存。
2.5 linux最广泛的压缩文件和解压缩命令
最广泛的压缩和解压缩的命令是tar, 有用的如以下三条
tar -cvf test.tar test/ test2/
这条命令就是把目录test/ 和 test2/压缩
tar -tf test.tar
这条命令只是查看 test.tar 的目录内容
tar -xvf test.tar
当然对于.tgz结尾的压缩文件,也可以用以下命令解压缩
tar -zxvf filename.tgz
三、第5章-- 理解shell
3.1 Shell 及子Shell
shell 其实是一种时刻都在运行的复杂交互式程序,在终端默认的bash shell 中输入 /bin/dash ,将开启个子shell , shell 实际上也相当于是一个进程,可由 ps -f 查询进程及父进程号。
四、第6章--LINUX 环境变量
4.1 环境变量
bash shell 中 环境变量可分为 全局变量和局部变量,用户定义。全局变量对所有的shell 均有效,局部变量则只对定义他们的shell 有效,linux也定义了标准的局部变量,用户定义变量则是用户定义的变量。
env 和 printenv 可查看全局变量,不包含局部变量和用户定义变量,set 则会输出全局变量、局部变量、用户定义变量。
4.2 设置局部环境变量
在shell自定义的变量则为局部环境变量,变量名区分大小写,用户定义变量使用小写较好
4.3 设置全局环境变量
可以在 某个Shell 中,使用如下方法设置全局环境变量,如:
my_variable="I am zjy"
export my_variable
这样设置的全局环境变量,在子shell中也是有效的,但是在另一个独立的shell则是无效的。
使用 unset my_variable 则可以删除环境变量
4.4 设置 PATH 环境变量
在shell 命令行界面输入一个外部命令,shell 将搜索整个系统找到对应的程序,PATH环境变量则定义了进行命令和程序查找的目录
echo $PATH 查看PATH 环境变量,
建议使用以下的方式新增PATH环境变量
export PATH=$PATH:/ROOT_1:/ROOT_2
这个也很容易理解,实际上就像是重新设置了PATH,$PAHT是老的环境变量,用:区分新增的一个或多个路径,这种方法的PATH环境变量实际上在子Shell 也是有效
上面的方法一旦退出shell,PATH环境变量则不见,如果设置永久有效的PATH 环境变量,则需要在/etc/profile 里新增PATH环境变量
让环境变量立即生效需要执行如下命令:
source /etc/profile
上述方法比较常用,但缺点是一旦升级发行版,该文件也会跟着更新,变量设置就会没了。
存储个人用户永久性bash shell变量的地方则是$HOME/.bashrc 文件
五、第7章-- Linux 文件权限
linux 安全系统的核心是用户账户,/etc/passwd 是一个记载用户账户信息的文件,当然里面很多账户不是真的用户,很多是系统用户。/etc/passwd记录了用户账户UID、目录位置、默认SHELL等信息,真正的用户密码保存于/etc/shadow。
5.1 useradd 和 userdel
useradd 用于创建用户账户,如 useradd -m test -s /bin/sh -g group –G adm,root gem, -m为新创建了test用户,并创建用户目录,-s 为所使用的shell,-g为归属组,-G 为另一个归属组,root gem表示主组为gem 。之后使用 passwd test 创建密码。usermod -G sudo 用户名 加入sudo组。可用 grep sudo /etc/group 查询 sudo组下包含的用户。
5.2 usermod
usermod 可用于修改用户账户,例如 -G 可修改所属组,-L将账户锁定,无法登录;-p 修改密码等等
5.3 创建新组和修改组
linux 通常将组信息记录在 /etc/group 文件,linux 通常会为每个新用户创建一个名字一模一样的组,但是也可以使用 groupadd 祖名 创建一个新组,新创建的组下没有用户,可以用 usermod -G 祖名 用户名 添加,groupmod 修改
5.4 文件权限
可用chown 修改文件的所有主或归属组,前者必须用root 用户,后者必须同时是 旧组和新组的成员,当然使用chgrp 也可以 。
5.5 共享文件
这里目的是创建一个共享文件目录,方法:修改目录的所属组,然后再修改为该目录设置替代组标识(这样目录下的所有新建文件都是同一个组的),再修改umask(目录的全权限777 减去umask 就是默认权限 ), 这样共享文件内的所有权限都是一致的 。
makdir testdir -> chgrp shard testdir -> umask 002
五、第8章-- 管理文件系统
如何使用LVM 给虚拟目录新增空间, 方法如下:
fdisk 创建一个物理分区,用 pvcreate 将分区创建实际的物理卷,使用 vgcreate 创建一个或多个卷组,之后使用lvcrete 创建 逻辑卷,之后再创建文件系统sudo mkfs.ext4 /dev/Vol1/lvtest,最后的一步,使用mount 挂载到一个新的挂载点。
六、第9章-- 安装软件程序
常用的命令行下载安装就是apt-get、aptitude 、dpkg等,其中 dpkg 针对的是 .deb文件,对于从源码安装软件包,安装步骤如下:
1. 下载 .tar.gz 压缩包
2. 解压缩,参考README 文件安装
3. 配置 ./configure 或 cmakd设置
4. make 编译
5. make install