权限: 1.文件 要对文件具有写权限,需要同时可读可写; 要对文件具有执行权限,需要同时可读可执行;
2.目录 若仅可执行,相当于进了房间但眼睛被蒙上了,除非你知道房间里的物品,不然不可以修改房间里的物品;不可增删房间物品。
若可读可写,相当于站在门外,能看见物品存在却看不清它的属性(权限),更不可以增删房间物品。
若目录不为空,权限为 rwx 才能被删除。
ctrl+alt+F1~F6进入命令行模式,ctrl+alt+F7进入图形界面
date +%Y/%m/%d 显示当前时间的 年/月/日,%H时,%M分
cal 月份 年份;显示日历
[tab][tab]命令补全,文件名补全
ctrl+c 终止程序
ctrl+d 键盘输入结束
man界面 /word 关键字查询 1表示用户可使用的命令或可执行文件 5配置文件或某些文件的格式 8系统管理员使用的命令
shutdown -h now/20:25/+10 ;定时关机
shutdown -r 时间; 重启
reboot ; 重启
切换执行等级:init num; 0关机 3纯命令行模式 5图形界面模式 6重启
ls -a(显示隐藏文件) -l(显示权限等);
ls -ld 目录; 显示目录本身权限
改变文件用户组 chgrp 用户组名 文件/目录 ; -R 递归改变目录中的文件
改变文件所有者 chown 用户名[:用户组] 文件/目录;
改变文件权限 chmod 777 文件/目录;r4 w2 x1
/tmp 所有人都可以工作,只有所有者和root才能删除文件
mkdir 新建空目录; touch 新建空文件 ;rmdir 删除空目录
cd - ;进入前一个工作环境
cd ~; 进入自己的主文件夹 cd ~account ;进入account的主文件夹
pwd 显示当前所在目录路径
cp 文件1 文件2; 复制文件 -r 递归复制文件夹
在命令后面加上 & 可以将任务放在后台运行
cp会改变文件的所有者为操作者
下载下来的文件权限会发生变化
rm -r 文件夹; 递归删除文件夹 如果是root,使用 /rm 可以直接删除不用询问
mv 文件1 文件2 目标文件夹
cat -n(显示行号) 文件; 从第一行输出文件
nl 文件; 添加行号打印
more ;一页页显示,空格向下翻,b回翻,q 离开,/word 关键字查询, enter 下一行
less ;一页页显示,pagedown下翻,pageup上翻
head [-n number ] 文件; 打印文件前number行
tail [-n number] 文件; 打印文件后number行
od -t c 二进制文件 ; 将二进制文件以ASCLL字符输出
umask ;显示默认文件/目录 所需要去除的权限
umask 数字 ; 改变umask
chattr +增加参数 -减少参数 参数:a 只能增加参数,不能减删; i 使文件不能删除,改名,更改
lsattr 文件; 显示文件隐藏属性
SUID 若执行者对二进制文件有x 权限,执行者将拥有所有者权限
SGID 若执行者对二进制文件拥有x 权限,执行者将拥有文件所属用户组的权限
若执行者对目录具有rwx权限,则执行者在该目录下的有效用户组将变成目录所属用户组
SBIT 若执行者对目录拥有wx 权限,则只有自己和root 才能删除自己创建的文件和目录
大写ST代表空的,即文件或目录的所有者或组自身对它没有x 权限,无意义
有效用户组是用户新建文件或目录时显示的所属用户组
file 文件名; 查看文件类型
which -a 命令; 在PATH中查找,将执行文件的所有完整文件名输出
whereis 文件名; 从数据库中查找特定文件,较快
locate 文件名; 从数据库中查找相关文件,较快
find 文件; 从硬盘中查找,较慢
gzip -v 文件名; 将文件压缩并显示压缩比
gzip -number 文件名; number1~9 越大压缩比越大越慢
gzip -d xx.gz; 解压文件 xx.bz2
bzip2 使用方法和gzip完全一样
tar -jcv -f xx.tar.bz2 要被压缩的文件或目录; 打包并用用bzip2压缩
tar -jxv -f xx.tar.bz2; bzip2解压缩
tar -zcv -f xx.tar.gz 要被压缩的文件或目录; 打包并用用gzip压缩
tar -zxv -f xx.tar.gz; gzip解压缩
参数-p 能使文件在解/压缩文件时保持文件原有的权限
dos2UNIX file; UNIX2dos file; 将dos与Linux命令互转格式
iconv -f 原本编码格式 -t 目标编码格式 文件; 语系编码转换
Vi 编辑器
一般模式下,G移动到文件最后一行,nG移动到文件第n 行; ctrl+r 重做上一个操作; u 复原上一个操作; 按住V 选择,y 复制,p粘贴,d 删除
i 进入编辑模式,ESC退出编辑模式
: 进入命令模式 :q! 强制离开不保存 :wq 保存后离开 :n1,n2s/word1/word2/g 将word1 用word2 替换 :sp filename; 多窗口编辑 ctrl+w+↓进入下一窗口 ctrl+w+↑ 进入上一窗口
文件系统最前面有一个启动扇区,可以安装引导安装程序
每个文件有一个inode,有多个block,12个直接,1个间接,1个双间接,1个三间接。inode 固定为128bytes,记录block 为4bytes
df -h ;列出文件系统磁盘使用情况
du -a; 列出当前工作目录中所有文件,目录占用的容量
ll -i 文件或目录; 打印属性和inode
fdisk /dev/hdc; 管理磁盘,分区,删除分区等
fdisk -l ; 找出系统所有设备分区
umount 设备文件名或挂载点; 将设备卸载
mkfs -t 文件系统格式 设备文件名; 磁盘格式化 例: mkfs -t ext3 /dev/hdc6
莫名其妙的死机会导致系统错乱,使用 fsck -C -f -a [-t 文件系统格式] 设备名称; 自动检查并修复错误
mount /dev/hdc6 /mnt/hdc6; 将/dev/hdc6 挂载到/mnt/hdc6上
mount -a ;根据/etc/fstab里面的数据将未挂载的都挂载起来
type command; 检测命令是外部命令还是内置于bash中
“ ”能保持原本变量的性质,’ ’不能
${var} 表示变量的值
`命令`或$(命令) 表示执行命令产生的结果
export var; 将变量转化为环境变量
$? ;上个命令的回传码,若顺利执行则为0
read -p "please input num:" num; 键盘输入
cat > t.txt< ~.tt.txt; 文件输入
cat >t.txt <<"eof"; 若键盘输入"eof"则输入结束
declare 声明变量类型 -a 数组 -i 整形 -x 将变量定义为环境变量
var=${str-expr}; 若str设置了,则var =${str},否则var=expr
var=${str=expr}; 若str设置了,则var =${str},否则var=str=expr
通配符 是bash 操作环境中的一个重要功能,比如利用通配符配合ls 查找文件名:ll -d /etc/[^a-z]*; cp -a /etc/??? /tmp
*表示0到无穷多个任意字符,? 表示一个任意字符 ------------通配符
[abcd] 表示a,b,c,d中任意一个
[a-b] 表示a到b中的任意一个
[^abc] 表示不是a,b,c中任一个
标准输入<,<<
标准输出>(清空),>>(追加)
错误输出 2>,2>>
命令 >t.txt 2>&1; 或 命令 &>t.txt; 将标准输出和错误输出都输出到同一文件当中
管道命令
more,less,head,tail,sed,cut
echo $PATH | cut -d ':' -f n1,n2; 以':'为分隔符并取出第n1和n2项
grep -n(显示行号) 'root'; 取出包含'root'的行
tee双向重定向输出
正则表达式 是处理字符串的方法,与通配符类似但不能混淆
[:alnum:] 数字及英文字符 [:alpha:] 英文字符 [:digit:] 数字 [:lower:] 小写字母 [:upper:] 大写字母
grep -n '[[:lower:]]' t.txt; 输出包含小写字母的行
grep -n '[^a-b]st' t.txt; 输出包含不是a和b的接st 的行
^ 在[ ]内则方向,否则为制表符,表示行首,$表示行尾
. 表示一个任意字符,* 表示重复前一个字符0到无穷次 o*表示零个或多个o, .* 表示任意字符串
'o\{2,5\}' 表示2~5 个o
sed 's/word1/word2/g' ;将word1 用word2替换
sed '2,5d' ;删除2~5 行
sed '2a 字符串' ;在第2 行后面插入字符串
sed '2i 字符串' ;在第2 行前面插入字符串
printf '%s %5i %8.2f' $(cat t.txt) ; 格式化输出
扩展正则表达式 egrep
+重复一个及以上前一个字符 ?零个或一个前字符 ()组 ()+一个及以上前字符组
awk NF每行拥有的字段总数 NR当前行数 FS当前分隔符
awk '条件1{动作1} 条件2{动作2} '
awk '{FS=":"} $3<10 {print $3}' t.txt
diff file1 file2 ; 比较文件是否一样
shell script
var=$((运算内容))
source xx.sh ;直接在父进程中执行
test -e filename; 判断文件名/目录 是否存在 -f 判断文件是否存在 -d 判断目录是否存在
test num1 -eq num2; 判断是否两数相等 -ne n1!=n2 -gt n1>n2 -lt n1<n2 -ge n1>=n2 -le n1<=n2
test str1 ==str2 ;判断字符串是否相等
[ str1 == str2 ]; 判断字符串是否相等
[ ]中的组件都要用空格分开,变量常量都需要用双引号括起来
[ 条件1 -a 条件2 ] ;判断是否同时成立
[ 条件1 -o 条件2 ] ;判断是否至少一个成立
命令 参数1 参数2 ; $0 表示命令接了多少个参数 $n 表示第n 个参数
if [ 条件 ]; then
command
fi
if [ 条件 ];then
command
else
command
fi
if [ 条件 ];then
command
elif [ 条件2 ];then
command
else
command
fi
case $变量 in
"内容")
command
;;
"内容")
command
;;
*)
command
;;
esac
函数
function fname(){
command
$n 表示调用它的第n 个参数
}
函数调用:fname 参数1 参数2;
while [ 条件 ]
do
command
done
for var in con1 con2 ...
do
command
done
for((i=1;i<=100;i=i+1))
do
command
done
sh -n xx.sh ; 测试是否有语法错误
UID为0代表是系统管理员
/etc/group 记录用户组信息
bin用户组: x 密码: 1 GID: root,bin,daemon 用户组成员
/etc/passwd 记录用户信息
root用户名: x密码: 0 UID :0 GID :root 用户组:/root 主文件夹: /bin/bash shell
/etc/shadow 记录用户密码信息
root用户名: * 密码: 14126 最近一次更改密码时间: x 密码不可变更天数 :x 密码需要重新更改的天数 :x 更改期限前警告天数: x 宽限天数: x 失效天数: x 待定
date --date="2008/09/04" +%s; 从1970.1.1到这个日期的秒数
groups查看当前用户有效与支持用户组,第一个为有效用户组
useradd vbird1 ; 添加一个用户,其所属用户组为其本身
useradd -g 用户组1 vbird ; 添加用户并指定其有效用户组
useradd -G 用户组2 vbird ; 添加用户并添加到一个次要用户组当中
useradd -r vbird1; 创建一个系统账户
userdel -r vbird1; 删除一个用户并删除其主文件夹
passwd account; 给账户改密码
groupadd group1; 创建用户组
groupdel group1; 删除用户组
finger username; 查看用户相关信息
id [username]; 查看某人或自己的UID和GID等
su - username; 切换用户
who ; 查看在线用户
write 用户账号 [用户终端接口]; 给某人发信息
mail; 查看邮件
mail username@localhost ; 给某email
ACL给特定用户或用户组限制权限
at 仅执行一次的工作调度
默认仅存在黑名单 /etc/at.deny
at TIME; 然后编辑命令 TIME的格式:HH:MM,HH:MM YYYY-MM-DD, HH:MM + number minutes/hours/days/weeks
at -c 工作号码; 查看具体工作号码的任务
atq ;列出所以at 工作调度
atrm number; 将number工作号码的任务取消
batch 用法和at 完全一样,在CPU 空闲时才执行
cron 循环执行的工作调度
crontab -e ;进入编辑工作状态
*分 *时 *日 *月 *周 command; *代表任意时刻都可以, 1,6表示1和6 1-6表示1到6都可以 */n 表示以n为周期
crontab -l; 查看所有工作调度
run-parts 文件夹; 将文件夹中的执行文件执行一遍
ctrl+z 将目前的工作暂停
jobs -l; 列出所有工作 -r 列出在后台run的工作 -s 列出暂停的工作
fg %jobnumer ;将jobnumber工作号码的工作在前台执行
fg PID; 同上
bg %jobnumber ;将jobnumber工作号码的工作在后台执行
bg PID; 同上
kill -9 %jobnumber ; 强制杀死jobnumber工作号码的任务
kill -9 PID; 同上
ps aux ; 查看系统所有的进程
ps -l ; 查看自己bash的相关进程
nice -n number command; number-20~19 越小命令优先级越高
renice number PID; 调整已经运行的命令的优先级
SELinux:安全强化的Linux
ls -Z 目录/文件; 查看安全上下文
*:*:type安全上下文
chcon -t tpye 文件/目录 ; 更改类型 -R 递归更改目录中文件
restorecon 文件/目录; 回复默认状态
getenforce 查看SELinux 模式
SELinux有三种模式:enforcing,permissive,disabled
SELinux有两种策略:targeted(默认),strict
sestatus ;查看当前SELinux详细信息
setenforce 0/1; 转换模式:0为permissive,1 为enforcing
tail /var/log/messages ; 查看因SELinux 设置导致的问题的解决办法
setsebool -P 布尔值=0/1; 设置规则
服务于对应端口号设置在/etc/services中
若要关闭端口号则只需关闭与其对应的服务即可
service 服务 restart/stop/start
super daemon的配置文件在/etc/xinetd.d/中
查询某个服务是否可以设置防火墙:ldd $(which 服务名) ;若出现libwrap.so 则可以设置防火墙
设置防火墙: vim /etc/hosts.allow;
主程序名(在配置文件/etc/xinetd.d/*中的service那项) 限制的ip段
vim /etc/hosts.deny;
主程序名(在配置文件/etc/xinetd.d/*中的service那项) 限制的ip段
stand alone启动脚本在/etc/init.d/*中 ,super daemon 也是一个stand alone
tarball是一个软件包,经过打包并压缩后的文件
安装过程:
configure/config 检测操作环境并生成makefile 文件
执行make,make 通过Makefile 文件编译源文件
gcc -c 文件1.c 文件2.c; 生成文件1.o,文件2.o 目标文件
gcc -o 文件1.o 文件2.o ; 将目标文件链接起来并生成执行文件
gcc 文件.c -lm(加入libm.so函数库) -L/lib(到这里找函数库) -L/usr/lib -I/usr/include(指定include的位置)
xx.so动态函数库
xx.a静态函数库
vim makefile;
target: 目标文件1.o 目标文件2.o
<tab>gcc -o 欲建立的可执行文件 目标文件1.o 目标文件2.o
make target; 编译
rpm最大的特点是将你要安装的软件先编译过,并且打包成RPM机制的包,数据库里记录了该软件的依赖属性软件,该软件只能安装在默认的硬件与操作系统版本。
SRPM含有软件的源代码,并含有软件的依赖属性说明。
RPM解决依赖属性的方式:YUM在线升级
rpm -ivh xxx.rpm/网址; 安装软件
rpm -Fvh xxx.rpm; 更新软件
rpm -qa ;列出所有已安装软件
rpm -q 软件名; 查询软件是否已经安装
rpm -e 软件名; 删除软件
rpm -qc 软件名; 列出启动配置文件
rpm -qf 文件; 查询该文件是那个文件包所有
rpm -ql 软件名: 列出软件所有文件所在完整目录路径
rpmbuild --rebuild xxx.src.rpm ;安装srpm,生成xxx.rpm
yum search 软件名; 查询有无相关软件
yum install 软件名; 安装软件
yun remove 软件名; 删除软件
yum groupinstall 软件组; 安装软件组
2.目录 若仅可执行,相当于进了房间但眼睛被蒙上了,除非你知道房间里的物品,不然不可以修改房间里的物品;不可增删房间物品。
若可读可写,相当于站在门外,能看见物品存在却看不清它的属性(权限),更不可以增删房间物品。
若目录不为空,权限为 rwx 才能被删除。
ctrl+alt+F1~F6进入命令行模式,ctrl+alt+F7进入图形界面
date +%Y/%m/%d 显示当前时间的 年/月/日,%H时,%M分
cal 月份 年份;显示日历
[tab][tab]命令补全,文件名补全
ctrl+c 终止程序
ctrl+d 键盘输入结束
man界面 /word 关键字查询 1表示用户可使用的命令或可执行文件 5配置文件或某些文件的格式 8系统管理员使用的命令
shutdown -h now/20:25/+10 ;定时关机
shutdown -r 时间; 重启
reboot ; 重启
切换执行等级:init num; 0关机 3纯命令行模式 5图形界面模式 6重启
ls -a(显示隐藏文件) -l(显示权限等);
ls -ld 目录; 显示目录本身权限
改变文件用户组 chgrp 用户组名 文件/目录 ; -R 递归改变目录中的文件
改变文件所有者 chown 用户名[:用户组] 文件/目录;
改变文件权限 chmod 777 文件/目录;r4 w2 x1
/tmp 所有人都可以工作,只有所有者和root才能删除文件
mkdir 新建空目录; touch 新建空文件 ;rmdir 删除空目录
cd - ;进入前一个工作环境
cd ~; 进入自己的主文件夹 cd ~account ;进入account的主文件夹
pwd 显示当前所在目录路径
cp 文件1 文件2; 复制文件 -r 递归复制文件夹
在命令后面加上 & 可以将任务放在后台运行
cp会改变文件的所有者为操作者
下载下来的文件权限会发生变化
rm -r 文件夹; 递归删除文件夹 如果是root,使用 /rm 可以直接删除不用询问
mv 文件1 文件2 目标文件夹
cat -n(显示行号) 文件; 从第一行输出文件
nl 文件; 添加行号打印
more ;一页页显示,空格向下翻,b回翻,q 离开,/word 关键字查询, enter 下一行
less ;一页页显示,pagedown下翻,pageup上翻
head [-n number ] 文件; 打印文件前number行
tail [-n number] 文件; 打印文件后number行
od -t c 二进制文件 ; 将二进制文件以ASCLL字符输出
umask ;显示默认文件/目录 所需要去除的权限
umask 数字 ; 改变umask
chattr +增加参数 -减少参数 参数:a 只能增加参数,不能减删; i 使文件不能删除,改名,更改
lsattr 文件; 显示文件隐藏属性
SUID 若执行者对二进制文件有x 权限,执行者将拥有所有者权限
SGID 若执行者对二进制文件拥有x 权限,执行者将拥有文件所属用户组的权限
若执行者对目录具有rwx权限,则执行者在该目录下的有效用户组将变成目录所属用户组
SBIT 若执行者对目录拥有wx 权限,则只有自己和root 才能删除自己创建的文件和目录
大写ST代表空的,即文件或目录的所有者或组自身对它没有x 权限,无意义
有效用户组是用户新建文件或目录时显示的所属用户组
file 文件名; 查看文件类型
which -a 命令; 在PATH中查找,将执行文件的所有完整文件名输出
whereis 文件名; 从数据库中查找特定文件,较快
locate 文件名; 从数据库中查找相关文件,较快
find 文件; 从硬盘中查找,较慢
gzip -v 文件名; 将文件压缩并显示压缩比
gzip -number 文件名; number1~9 越大压缩比越大越慢
gzip -d xx.gz; 解压文件 xx.bz2
bzip2 使用方法和gzip完全一样
tar -jcv -f xx.tar.bz2 要被压缩的文件或目录; 打包并用用bzip2压缩
tar -jxv -f xx.tar.bz2; bzip2解压缩
tar -zcv -f xx.tar.gz 要被压缩的文件或目录; 打包并用用gzip压缩
tar -zxv -f xx.tar.gz; gzip解压缩
参数-p 能使文件在解/压缩文件时保持文件原有的权限
dos2UNIX file; UNIX2dos file; 将dos与Linux命令互转格式
iconv -f 原本编码格式 -t 目标编码格式 文件; 语系编码转换
Vi 编辑器
一般模式下,G移动到文件最后一行,nG移动到文件第n 行; ctrl+r 重做上一个操作; u 复原上一个操作; 按住V 选择,y 复制,p粘贴,d 删除
i 进入编辑模式,ESC退出编辑模式
: 进入命令模式 :q! 强制离开不保存 :wq 保存后离开 :n1,n2s/word1/word2/g 将word1 用word2 替换 :sp filename; 多窗口编辑 ctrl+w+↓进入下一窗口 ctrl+w+↑ 进入上一窗口
文件系统最前面有一个启动扇区,可以安装引导安装程序
每个文件有一个inode,有多个block,12个直接,1个间接,1个双间接,1个三间接。inode 固定为128bytes,记录block 为4bytes
df -h ;列出文件系统磁盘使用情况
du -a; 列出当前工作目录中所有文件,目录占用的容量
ll -i 文件或目录; 打印属性和inode
fdisk /dev/hdc; 管理磁盘,分区,删除分区等
fdisk -l ; 找出系统所有设备分区
umount 设备文件名或挂载点; 将设备卸载
mkfs -t 文件系统格式 设备文件名; 磁盘格式化 例: mkfs -t ext3 /dev/hdc6
莫名其妙的死机会导致系统错乱,使用 fsck -C -f -a [-t 文件系统格式] 设备名称; 自动检查并修复错误
mount /dev/hdc6 /mnt/hdc6; 将/dev/hdc6 挂载到/mnt/hdc6上
mount -a ;根据/etc/fstab里面的数据将未挂载的都挂载起来
type command; 检测命令是外部命令还是内置于bash中
“ ”能保持原本变量的性质,’ ’不能
${var} 表示变量的值
`命令`或$(命令) 表示执行命令产生的结果
export var; 将变量转化为环境变量
$? ;上个命令的回传码,若顺利执行则为0
read -p "please input num:" num; 键盘输入
cat > t.txt< ~.tt.txt; 文件输入
cat >t.txt <<"eof"; 若键盘输入"eof"则输入结束
declare 声明变量类型 -a 数组 -i 整形 -x 将变量定义为环境变量
var=${str-expr}; 若str设置了,则var =${str},否则var=expr
var=${str=expr}; 若str设置了,则var =${str},否则var=str=expr
通配符 是bash 操作环境中的一个重要功能,比如利用通配符配合ls 查找文件名:ll -d /etc/[^a-z]*; cp -a /etc/??? /tmp
*表示0到无穷多个任意字符,? 表示一个任意字符 ------------通配符
[abcd] 表示a,b,c,d中任意一个
[a-b] 表示a到b中的任意一个
[^abc] 表示不是a,b,c中任一个
标准输入<,<<
标准输出>(清空),>>(追加)
错误输出 2>,2>>
命令 >t.txt 2>&1; 或 命令 &>t.txt; 将标准输出和错误输出都输出到同一文件当中
管道命令
more,less,head,tail,sed,cut
echo $PATH | cut -d ':' -f n1,n2; 以':'为分隔符并取出第n1和n2项
grep -n(显示行号) 'root'; 取出包含'root'的行
tee双向重定向输出
正则表达式 是处理字符串的方法,与通配符类似但不能混淆
[:alnum:] 数字及英文字符 [:alpha:] 英文字符 [:digit:] 数字 [:lower:] 小写字母 [:upper:] 大写字母
grep -n '[[:lower:]]' t.txt; 输出包含小写字母的行
grep -n '[^a-b]st' t.txt; 输出包含不是a和b的接st 的行
^ 在[ ]内则方向,否则为制表符,表示行首,$表示行尾
. 表示一个任意字符,* 表示重复前一个字符0到无穷次 o*表示零个或多个o, .* 表示任意字符串
'o\{2,5\}' 表示2~5 个o
sed 's/word1/word2/g' ;将word1 用word2替换
sed '2,5d' ;删除2~5 行
sed '2a 字符串' ;在第2 行后面插入字符串
sed '2i 字符串' ;在第2 行前面插入字符串
printf '%s %5i %8.2f' $(cat t.txt) ; 格式化输出
扩展正则表达式 egrep
+重复一个及以上前一个字符 ?零个或一个前字符 ()组 ()+一个及以上前字符组
awk NF每行拥有的字段总数 NR当前行数 FS当前分隔符
awk '条件1{动作1} 条件2{动作2} '
awk '{FS=":"} $3<10 {print $3}' t.txt
diff file1 file2 ; 比较文件是否一样
shell script
var=$((运算内容))
source xx.sh ;直接在父进程中执行
test -e filename; 判断文件名/目录 是否存在 -f 判断文件是否存在 -d 判断目录是否存在
test num1 -eq num2; 判断是否两数相等 -ne n1!=n2 -gt n1>n2 -lt n1<n2 -ge n1>=n2 -le n1<=n2
test str1 ==str2 ;判断字符串是否相等
[ str1 == str2 ]; 判断字符串是否相等
[ ]中的组件都要用空格分开,变量常量都需要用双引号括起来
[ 条件1 -a 条件2 ] ;判断是否同时成立
[ 条件1 -o 条件2 ] ;判断是否至少一个成立
命令 参数1 参数2 ; $0 表示命令接了多少个参数 $n 表示第n 个参数
if [ 条件 ]; then
command
fi
if [ 条件 ];then
command
else
command
fi
if [ 条件 ];then
command
elif [ 条件2 ];then
command
else
command
fi
case $变量 in
"内容")
command
;;
"内容")
command
;;
*)
command
;;
esac
函数
function fname(){
command
$n 表示调用它的第n 个参数
}
函数调用:fname 参数1 参数2;
while [ 条件 ]
do
command
done
for var in con1 con2 ...
do
command
done
for((i=1;i<=100;i=i+1))
do
command
done
sh -n xx.sh ; 测试是否有语法错误
UID为0代表是系统管理员
/etc/group 记录用户组信息
bin用户组: x 密码: 1 GID: root,bin,daemon 用户组成员
/etc/passwd 记录用户信息
root用户名: x密码: 0 UID :0 GID :root 用户组:/root 主文件夹: /bin/bash shell
/etc/shadow 记录用户密码信息
root用户名: * 密码: 14126 最近一次更改密码时间: x 密码不可变更天数 :x 密码需要重新更改的天数 :x 更改期限前警告天数: x 宽限天数: x 失效天数: x 待定
date --date="2008/09/04" +%s; 从1970.1.1到这个日期的秒数
groups查看当前用户有效与支持用户组,第一个为有效用户组
useradd vbird1 ; 添加一个用户,其所属用户组为其本身
useradd -g 用户组1 vbird ; 添加用户并指定其有效用户组
useradd -G 用户组2 vbird ; 添加用户并添加到一个次要用户组当中
useradd -r vbird1; 创建一个系统账户
userdel -r vbird1; 删除一个用户并删除其主文件夹
passwd account; 给账户改密码
groupadd group1; 创建用户组
groupdel group1; 删除用户组
finger username; 查看用户相关信息
id [username]; 查看某人或自己的UID和GID等
su - username; 切换用户
who ; 查看在线用户
write 用户账号 [用户终端接口]; 给某人发信息
mail; 查看邮件
mail username@localhost ; 给某email
ACL给特定用户或用户组限制权限
at 仅执行一次的工作调度
默认仅存在黑名单 /etc/at.deny
at TIME; 然后编辑命令 TIME的格式:HH:MM,HH:MM YYYY-MM-DD, HH:MM + number minutes/hours/days/weeks
at -c 工作号码; 查看具体工作号码的任务
atq ;列出所以at 工作调度
atrm number; 将number工作号码的任务取消
batch 用法和at 完全一样,在CPU 空闲时才执行
cron 循环执行的工作调度
crontab -e ;进入编辑工作状态
*分 *时 *日 *月 *周 command; *代表任意时刻都可以, 1,6表示1和6 1-6表示1到6都可以 */n 表示以n为周期
crontab -l; 查看所有工作调度
run-parts 文件夹; 将文件夹中的执行文件执行一遍
ctrl+z 将目前的工作暂停
jobs -l; 列出所有工作 -r 列出在后台run的工作 -s 列出暂停的工作
fg %jobnumer ;将jobnumber工作号码的工作在前台执行
fg PID; 同上
bg %jobnumber ;将jobnumber工作号码的工作在后台执行
bg PID; 同上
kill -9 %jobnumber ; 强制杀死jobnumber工作号码的任务
kill -9 PID; 同上
ps aux ; 查看系统所有的进程
ps -l ; 查看自己bash的相关进程
nice -n number command; number-20~19 越小命令优先级越高
renice number PID; 调整已经运行的命令的优先级
SELinux:安全强化的Linux
ls -Z 目录/文件; 查看安全上下文
*:*:type安全上下文
chcon -t tpye 文件/目录 ; 更改类型 -R 递归更改目录中文件
restorecon 文件/目录; 回复默认状态
getenforce 查看SELinux 模式
SELinux有三种模式:enforcing,permissive,disabled
SELinux有两种策略:targeted(默认),strict
sestatus ;查看当前SELinux详细信息
setenforce 0/1; 转换模式:0为permissive,1 为enforcing
tail /var/log/messages ; 查看因SELinux 设置导致的问题的解决办法
setsebool -P 布尔值=0/1; 设置规则
服务于对应端口号设置在/etc/services中
若要关闭端口号则只需关闭与其对应的服务即可
service 服务 restart/stop/start
super daemon的配置文件在/etc/xinetd.d/中
查询某个服务是否可以设置防火墙:ldd $(which 服务名) ;若出现libwrap.so 则可以设置防火墙
设置防火墙: vim /etc/hosts.allow;
主程序名(在配置文件/etc/xinetd.d/*中的service那项) 限制的ip段
vim /etc/hosts.deny;
主程序名(在配置文件/etc/xinetd.d/*中的service那项) 限制的ip段
stand alone启动脚本在/etc/init.d/*中 ,super daemon 也是一个stand alone
tarball是一个软件包,经过打包并压缩后的文件
安装过程:
configure/config 检测操作环境并生成makefile 文件
执行make,make 通过Makefile 文件编译源文件
gcc -c 文件1.c 文件2.c; 生成文件1.o,文件2.o 目标文件
gcc -o 文件1.o 文件2.o ; 将目标文件链接起来并生成执行文件
gcc 文件.c -lm(加入libm.so函数库) -L/lib(到这里找函数库) -L/usr/lib -I/usr/include(指定include的位置)
xx.so动态函数库
xx.a静态函数库
vim makefile;
target: 目标文件1.o 目标文件2.o
<tab>gcc -o 欲建立的可执行文件 目标文件1.o 目标文件2.o
make target; 编译
rpm最大的特点是将你要安装的软件先编译过,并且打包成RPM机制的包,数据库里记录了该软件的依赖属性软件,该软件只能安装在默认的硬件与操作系统版本。
SRPM含有软件的源代码,并含有软件的依赖属性说明。
RPM解决依赖属性的方式:YUM在线升级
rpm -ivh xxx.rpm/网址; 安装软件
rpm -Fvh xxx.rpm; 更新软件
rpm -qa ;列出所有已安装软件
rpm -q 软件名; 查询软件是否已经安装
rpm -e 软件名; 删除软件
rpm -qc 软件名; 列出启动配置文件
rpm -qf 文件; 查询该文件是那个文件包所有
rpm -ql 软件名: 列出软件所有文件所在完整目录路径
rpmbuild --rebuild xxx.src.rpm ;安装srpm,生成xxx.rpm
yum search 软件名; 查询有无相关软件
yum install 软件名; 安装软件
yun remove 软件名; 删除软件
yum groupinstall 软件组; 安装软件组