目录
第一部分:操作文件及目录
1. 文件属性(查看文件属性命令stat)
struct stat {
dev_t st_dev; /* 设备 */
ino_t st_ino; /* 节点 */
mode_t st_mode; /* 模式 */
nlink_t st_nlink; /* 硬连接 */
uid_t st_uid; /* 用户ID */
gid_t st_gid; /* 组ID */
dev_t st_rdev; /* 设备类型 */
off_t st_off; /* 文件字节数 */
unsigned long st_blksize; /* 块大小 */
unsigned long st_blocks; /* 块数 */
time_t st_atime; /* 最后一次访问时间 */
time_t st_mtime; /* 最后一次修改时间 */
time_t st_ctime; /* 最后一次改变时间(指属性) */
};
2. 文件类型
文件类型对应文件属性中的st_mode,文件类型有很多种,常见的有常规文件、符号链接(硬链接、软链接)、管道文件、设备文件(符号设备、块设备)、socket文件等,不同的文件类型对应不同的功能和作用。
file,这个命令用来查看各类文件的属性,和 stat 命令相比,它可以进一步识别普通文件。
3. 文件属主
文件属主包括该文件所属用户,以及该文件所属的用户组,用户可以属于多个组。
管理命令:
- useradd , userdel 创建和删除用户
- groupadd , groupdel 创建和删除用户组
- passwd 修改用户密码
配置信息管理文件说明:
- /etc/passwd 存放用户信息
- /etc/group 存放用户组信息
- /etc/shadow 存放密码
常用命令:
- chown [-R] 用户名:组名 文件名 修改文件属主,-R表示递归修改
- chmod [+/- rwx]/[八进制数字] 文件名 修改文件权限
4. 高频使用命令汇总
- cd:切换目录
- mkdir:创建目录
- touch:创建文件
- vim:编辑文件内容,或新建一个文件并进入编辑状态
- cat/less/more/head/tail... 查看文件内容
- ls: 显示当前目录下的文件和目录
- cp:复制文件或目录
- ln:创建链接文件
硬链接,创建方式:ln + 源文件名 + 目标文件名
软连接,即符号链接,创建方式:ln -s + 源文件名 + 目标文件名
- mv:重命名或移动文件
- rm:删除文件,删除目录使用rm -r +目录名称
5. 应用示例
#!/bin/bash
#遍历目录下所有的文件是目录还是文件
for file in /Users/*
do
if test -d ${file}; then
echo "${file}是目录"
else
echo "${file}是文件"
fi
done
#按行读取文件内容
while read LINE; do echo $LINE; done < test.sh
第二部分:监控程序
监测程序
ps: 显示运行在当前控制台下的属于当前用户的进程;
top: 实时显示进程信息;
kill PID: 终止进程,kill -s HUP 3904
监测磁盘空间
mount:输出当前系统上挂载媒体的设备列表
mount -t type device directory 手动挂载媒体设备的命令,示例:mount -t vfat /dev/sdb1 /media/disk/
type参数指定了磁盘被格式化的文件系统类型
- vfat:windows长文件系统;
- ntfs: 。。。高级文件系统;
- iso9660:标准CD-ROM文件系统;
umount:卸载挂载设备,从Linux系统上移除一个可移动设备时,不能从系统上直接删除,而是要先卸载
umount [directory | device] 卸载移动设备的命令
df:查看所有易挂载设备的使用情况
du:显示某个特定目录磁盘使用情况 [-c -h -s]
sort [-n -M -r] 对文件内容排序 -n以数字排序,-M三字符月份名排序, 反序排序
tar -cvf test.tar test/ test2/ 归档文件 ----> tar -xvf test.jar 从已有归档文件中提取文件(.tgz结尾的文件使用-zxvf解压)
应用示例: 监控系统服务,并发送异常报警邮件第三部分:编辑器相关使用
#!/bin/bash
#a mail alarm which could monitor a server batchly
#by author @GuoChunli 2019
cat << EOF
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++Welcome to use auto server monitor++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
EOF
EMAIL=email.txt
DATE=`date`
#check it's a file ,then traverse all elements in the file
if [[ -z $1 ]];then
echo -e "\033[31m {Usage: nginx | mysql | monitorServers.txt} \033[0m"
exit
fi
if [ -f $1 -a "$1" == "monitorServers.txt" ];then
for i in `cat monitorServers.txt | grep -v "#"`
do
count=` ps -ef | grep $i | grep -v email | grep -v grep | wc -l `
M_IPADDR=`ipconfig getoption en0 router | grep "Bcast" | awk '{print $2}' | cut -d: -f 2`
if [[ $count -eq 0 ]]; then
cat > $EMAIL << EOF
********************server monitor*****************
通知类型: malfunction
服务:$i
主机:$M_IPADDR
状态:Warning
日期/时间:$DATE
其他信息:
CRITICAL - $i Server connection is abnormal, please check!
***************************************************
EOF
dos2unix $EMAIL
echo -e "\033[31m The server $i is abnormal, please check! \033[0m"
mail -s "$M_IPADDR $i is abnormal" [email protected] < $EMAIL >> /dev/null 2>&1
else
echo "The server $i is in service!"
fi
done
else
count=` ps -ef | grep $1 | grep -v email | grep -v "grep" | wc -l `
M_IPADDR=`ipconfig getoption en0 router | grep "Bcast" | awk '{print $2}' | cut -d: -f 2`
if [[ $count -eq 0 ]]; then
cat > $EMAIL << EOF
********************server monitor*****************
通知类型: malfunction
服务:$1
主机:$M_IPADDR
状态:Warning
日期/时间:$DATE
其他信息:
CRITICAL - $1 Server connection is abnormal, please check!
***************************************************
EOF
dos2unix $EMAIL
echo -e "\033[31m The server $1 is abnormal, please check! \033[0m"
mail -s "$M_IPADDR $1 is abnormal" [email protected] < $EMAIL >> /dev/null 2>&1
else
echo "The server $1 is in service!"
fi
fi
第三部分:编辑器相关使用
vim 编辑器(vi improved,简称vim)
vi编辑器是Unix系统最初的编辑器,它使用控制台图形模式来模拟文本编辑窗口,允许查看文件中的行、在文本中移动、插入、编辑和替换文本。
apt-get 用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。
vim编辑器在内存缓冲区域处理数据。
vim编辑器有两种操作模式:
- 普通模式,将按键解释为命:令h(左) j(下) k(上) l(右)
- 插入模式
x 删除当前光标所在位置的字符
dd 删除光标所在行
dw 删除光标所在位置的单词
d$ 删除光标所在位置至行尾的内容
J 删除光标所在行的换行符
u 撤销上一编辑命令
a 在当前光标位置后追加
A 在当前光标坐在行行尾追加
r [char] 用char替换光标所在位置的单个字符
R [text] 用text覆盖光标所在位置的数据,知道按下esc
v 进入可视模式
y 复制(y$复制内容至当前行尾)
p 粘贴
:s/old/new/ 替换
:s/lod/new/g 替换所有old
:n, ms/old/new/g 替换行号n和m之间所有old
:%s/old/new/g 替换整个文件中的所有old
:%s/old/new/gc 替换整个文件中的所有old,但每次出现时提示
nano 编辑器
nano myprog.c 启动编辑器,nano控制命令在使用时,不区分大小写
附录
1. Linux下挂载点说明
- / : 虚拟目录的根目录,通常不会在这里存储文件
- /usr :用户安装软件的目录
- /var :可变目录,用以存放经常变化的文件,比如日志文件
- /bin :二进制目录,存放许多GNU用户级的工具
- /dev :设备目录,Linux在这里创建设备节点
- /home :主目录,Linux在这里创建用户目录
- /etc :系统配置文件目录
- /boot :启动目录,存放启动文件
- /opt :可选目录,通常用于存放可选的软件包
- /lib :库目录,存放系统和应用程序的库文件
- /tmp :临时目录,可以在该目录创建和删除临时工作文件