首页 > 代码库 > linux基础学习笔记——操作大全
linux基础学习笔记——操作大全
作者:liaoyi
更新时间:2014-6-2
****************基本操作*****************
关机
shutdown -h now root用户
init 0 root用户
halt root+一般用户
poweroff
重启
shutdown -r now root用户
init6 root用户
reboot root+一般用户
注意:
1.shutdown 比较灵活,可用于先关闭服务再关机重启和定时,可向所有用户发出警告。
2.关机重启前可用几次sync命令同步磁盘。防止数据丢失。
3.磁盘损坏用fsck /dev/sda7文件系统检查修复。
注销
logout
ctrl+alt+backspace
切换用户
su switch user su liaoyi ( #root用户,$一般用户)
终端控制界面切换(字符<->图形)
startx 图形化界面
init 5
runlevel 3:ctrl+alt f1~f6(tty1-tty6),startx
runlevel 5:ctrl+alt f1~f6(tty1-tty6),f7 (tty7) 控制台转换(不同用户)
vi /etc/inittab id:5:initdefault: runlevel
tab 命令补全/文件名补全
ctrl+c 发出SIGINT信号中断退出进程
ctrl+z 发出SIGTSTP信号暂停进程
ctrl+d 键盘输入结束,离开输入界面,相当于exit
ctrl+alt+enter 全屏
clear 清屏
echo -e ‘\033c‘ 彻底清屏
man manual操作说明 空格,pg dn ,pg up翻页,/word 查找,q退出(/usr/share/man/)
info linux中的在线求助命令。(/usr/share/info/)
/usr/shar/doc/ 各种说明文档
nano 一种简单的文本编辑器
bc 计算器 scale=3 设置小数位数,quit离开
U盘挂载:
VM->Removble Device->USB->connect(虚拟机右下角)
fdisk -l 或 df 查看是否挂载以及优盘信息。
挂载mount -t vfat /dev/sdb1 /mnt
卸载: umount /mnt
光盘挂载:
VM->Removble Device->CD/DVD->connect
挂载mount /dev/cdrom /media
卸载cd ..
umount /media
****************文件系统*****************
---基本文件操作---
ls list files
ls -a =ls --all all ls-l=ll long ls-c按日期排列 ls -i inode ls -ail
ls /usr/include
cd chang diretory
cd . 当前目录 cd ..父目录 cd # =cd ~=cd 家目录 cd ~liao 进入某个账户的home cd -上次目录
pwd print working directory
pwd -p 显示正确路径(不以链接文件显示)
mkdir make directory 新建目录
mkdir dir1 dir2 dir3
mkdir -p dir1/dir2
mkdir -m 777 dir1
rmdir remove directory 删除空目录
rm -rf dir 强制递归删除目录以及目录中的文件(recurse force)
cp copy 复制(默认-i询问,-f强制,-r递归,-u更新)
cp a.c /home cp /tmp /home
cp -r dir3 /tmp/dir4 递归复制
cp -a a.c /home 保留文件原有属性
cp -u a.c /home/a.c 目标文件与源文件有变化才复制(update)
cp -s a.c a_slink 生成软链接
cp -l a.c a_hlink 生成硬链接
cp -d a_slink a_slink1 复制链接文件而非原文件。
mv remove mv /home/a.c 删除、重命名
mv -r mv -r/home/dir
cat 查看文件(concatenate连续)
cat /etc/passwd
cat stdio.h | grep fgetc
cat stdio.h | more 分页,自动退出
cat stdiolh | less 分页,q退出
tac 从后面开始显示
nl 显示加行号
more 翻页查看
less 翻页查看(比more更灵活,man调用less,所以和man操作一样)
head -n 10 a.txt 显示头10行 head -n -100 a.txt 除去后面100行
tail -n 10 a.tex 显示尾10行 head -n +100 a.txt 除去前面100行
od -t c a.bin (d十进制,f浮点数,o八进制,x十六进制)
touch 创建文件,还可以修改文件时间(mtime(modification),ctime(status),atime(access))
ll默认显示的是mtime,可用ll --time=ctime a.txt 显示其他时间。
touch -t 1309150202b a.txt 修改文件时间
file 查看文件基本数据
脚本文件名查询:
which 根据PATH查找执行文件
type
文件名查询
whereis 查找数据库,快
locate 查找数据库(/var/lib/mlocate),快(使用前可用updatedb命令读取/etc/updatedb.conf更新数据库)
find ./ -name a.c 直接查找磁盘,功能强大,速度慢
1.时间
2.用户,用户组
3.权限,名称
4.其他
/vi/vim/gedit
grep "***" ./a.c
netstat -an | grep tftp
grep:global search regular expression(RE) and print out the line
全面搜索正则表达式并把行打印出来
wc 统计行数,单词数,字符数(-l -c -w)
重定向
1.> cat passwd > a.txt 覆盖 3.< wc < a.txt
2.>> cat passwd >> a.txt 追加 4.<<
---磁盘与文件系统管理---
ln link 创建链接文件
1.硬链接: ln filename lfilename 在某个目录的数据块中多了一个文件名指向同一个文件的inode号。
2.符号链接:ln -s filename lfilename 单独的文件inode号,存放要指向的目录下的文件名。新链接文件,不能单独存在。(symbolic)
df disk free主要读取super block来获取磁盘整体信息
df -h
du directory usage 评估文件系统的磁盘使用量
分区
fdisk 可新增和删除磁盘分区(无法处理大于2TB的磁盘)
fdisk -l 查看整个系统的磁盘设备分区情况。
fdisk /dev/sda 针对一个磁盘进行操作
p:打印分区表
Disk /dev/sda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 2479 19912536 83 Linux
/dev/sda2 2480 2610 1052257+ 82 Linux swap / Solaris
n 新建分区
d删除分区
q不保存离开,w写入离开
partprobe 强制让内核重新找一次分区表
parted 处理2T以上的磁盘分区
MBR(Master Boot Record)---BIOS+MBR
GPT(GUID (Globally Unique Identifier)Partifier Partition Table Format)---EFI + GPT
parted /dev/sdc help 帮助(h)
parted /dev/sdc print 打印分区表(p)
parted> mklabel gpt 将一个MBR磁盘修改为为GPT磁盘(支持2T以上分区)
parted>mklabel msdos 将一个GPT磁盘修改为为MBR磁盘
parted /dev/sdc mkpart part1 ext4 0G 100G 新增分区
parted /dev/sdc rm 3 删除分区
parted> mkpartfs 新增分区并格式化(只允许ext2)
parted> quit 提出(q)
mkfs 格式化
mkfs -t ext3 /dev/hdc6 (综合命令,使用默认方式格式化,按两次tab可现实支持的文件系统。)
日志ext3 卷标label block大小 每个inode对应block大小
mke2fs -j -L "liao_logical" -b 2048 -i 8192 /dev/hdc6(公用程序指定格式格式化)
fsck 磁盘检验:
fsck -C -f -t ext3 /dev/hdc6 强制检查设备(实际调用e2fsck,按两次tab现实支持fsck的文件系统)
执行fsck时,会对文件系统有损坏,检查的分区不能挂在系统上。
检测的结果如果有问题的数据会放到lost+found目录中。
badblocks -sv /dev/hdc6 检查磁盘是否有坏轨,mke2fs会检测,所以一般不用。
mount 挂载
mount 查看系统当前挂载信息
mount -l 查看系统当前挂载信息(显示卷标label)
mount -a 重新按/etc/fstab 数据将未挂载的磁盘都挂载上来。
mount -t 按照某种文件系统类型进行挂载。
mount -L 用卷标label进行挂载
mount -o 挂载时额外参数(ro,rw,async,sync,remount...)
/etc/filesystems:系统指定的测试挂载文件系统类型
/proc/filesystems:Linux系统已经加载的文件系统类型
/lib/modules/$(uname -r)/kernel/fs/*内核支持的问价系统驱动程序
磁盘挂载:mount /dev/hdc6 /mnt/hdc6
光盘挂载:mount -t iso9660 /dev/cdrom /media/cdrom
U盘挂载: mount -t vfat -o iocharset=cp950 /dev/sda1 /mnt/flash (中文语系挂载)
重新挂载根目录:mount -o remount,rw,auto/ (单用户模式可把只读的根目录重新挂载)
挂载/home到/mnt/home下:mount --bind /home /mnt/home
用卷标挂载:mount -L "liao_logical" /mnt/hdc6 (用dumpe2fs -h /dev/hdc6 查询卷标)
umount 卸载
可以用设备文件名或者挂载点进行卸载,注意要退出挂载目录进行。
umount /dec/hdc6
umount /media/cdrom
其他磁盘参数修改工具:
mknod 新建设备节点
e2label /dev/hdc6 "my_test" 修改label卷标
tune2fs -l 读super block, -j转换为ext3文件系统,-L 修改label卷标
hdparm -Tt /dev/sda 一般用于IDE参数调整。还可以用来测试磁盘性能。
blkid
开机挂载:
/etc/fstab
设备(卷标) (挂载点) 文件系统 额外参数 dump(备份) fsck(磁盘检查)
LABEL=/ / ext3 defaults 1 1
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
LABEL=SWAP-sda2 swap swap defaults 0 0
实际挂载记录:
/etc/mtab
/proc/mounts
swap构建
---文件的压缩打包备份---
compress,uncompress(.Z) -> gzip,zcat(.gz) -> bzip2 ,bzat(.bz2)
利用压缩算法将文件的空余空间充分填满。
zip tmp.zip test 压缩
unzip tmp.zip 解压缩
tar -cvf tmp.tar /home/tmp 打包
tar -xvf tmp.tar 解包
tar -cvzf xxx.tar.gz /home/tmp 打包并压缩
tar -xvzf xxx.tar.gz 解包解压缩
(c压缩/x解压,v信息,zip算法,file文件名(放最后))
dump 备份文件系统或单一目录
restore 恢复
mkisofs 新建镜像文件
cdrecord 光盘刻录工具
dd 可备份完整的分区或磁盘,因为dd可读取磁盘的扇区的表面数据
cpio 搭配find进行备份
find / |cpio -ovcB > [file|device] 备份
cpio -ivcdu < [file|device] 还原
cpio -ivct < [file|device] 查看
---高级文件系统管理---
Quota磁盘配额
为用户分配磁盘空间,限制文件数量或磁盘容量。
需要内核与文件系统支持,基于整个文件系统进行限制,usrpuota,grpquota
一、文件系统支持
在mount的时候增加quota支持权限,usrquota,grpquota
mount -o remount,usrquota,grpquota /home
用mount, cat /proc/mounts/, cat /etc/mtab, cat /etc/fstab查看
二、建立quota记录文件
1.quotacheck :扫描文件系统并建立 Quota 的记录文件
quotacheck -avug 根据/etc/mtab内有设定quota的文件系统执行扫描,并建立数据文件。执行一次即可。自动同步记载变更aquota.user,aquota.group.
(a-all, v-详细,u-user, g-group, s-以M为单位显示,f-force)
quotacheck -avug -Mf 强制扫描文件系统。
quotacheck -vug /secbox 扫描指定文件系统。
三、启动quota服务
quotaon -avug 只在第一次启动quota时进行,重启时/etc/rc.d/rc.sysinit或rc.local有启动脚本。
quotaon -vgu /home
四、关闭quota服务
quotaoff -avug
quotaoff -vug /home
五、quota编辑与设定
1.编辑
edquota -u myquota1 根据用户编辑quota限额
1. 文件系统 (filesystem):说明该限制值是针对哪个文件系统 (戒 partition);
2. 磁盘容量 (blocks):这个数值是 quota 自己算出杢的,单位为 Kbytes,请丌要更劢他;
3. soft:磁盘容量 (block) 的 soft 限制值,单位亦为 KB
4. hard:block 的 hard 限制值,单位 KB;
5. 档案数量 (inodes):这是 quota 自己算出杢的,单位为个数,请丌要更劢他;
6. soft:inode 的 soft 限制值;
7. hard:inode 的 hard 限制值;
edquota -g myquotagrp 根据群组编辑quota限额
edquota -t 编辑宽限时间
edquota -p myquota1 -u myquota2 复制给其他用户
2.用命令直接设定
setquota -u myquota5 100000 200000 0 0 /home
六、显示 quota报表
1.根据用户群组名查看。
quota -uvs myquota1 myquota2
quota -gvs myquotagrp
2.repquota -avugs 查看所有用户,群组的quota报表。
七、对超出限额者发出警告
warnquota
依据 /etc/warnquota.conf 的讴定,然后找出目前系统上面 quota 用量赸过 soft (就是有 grace time 出现的那些家伙) 的账号,透过 email 的功能将警告信件发送到用户的电子邮件信箱。
RAID
redundant Arrays of Inexpensive Disks 容错廉价磁盘阵列
用多个磁盘构成一个较大的磁盘,实现数据的备份(安全可靠),读写性能好,容量加大。
等级:
RAID-0 等量模式,性能最佳,文件切割后交错存到各个磁盘上,读写快,不安全
RAID-1 映像模式,文件在每个磁盘都有备份,完整备份,安全,读写慢
RAID 0+1,RAID 1+0 前两种模式的结合。
RAID 5 每个磁盘加入同位检查数据(parity),可用来还原。
硬件 :使用专门的磁盘阵列卡
dev/sda-p
软件 :软件模拟,可以两块以上磁盘或者两个以上分区设计
/dev/md0-9
madadm
LVM
Logical Volume Manager 逻辑卷管理器 ,可以弹性调整文件系统的容量。
PE-> LV -> VG
1.将磁盘分区制作成物理卷PV。
2.创建一个卷组VG,选择加入物理分区PV。
3.创建逻辑卷LV,LV由VG内的PE块组成。可通过增减PE块扩大缩小容量。
PV:Physical Volume
· pvcreate :将实体 partition 建立成为 PV ;
· pvscan :搜寻目前系统里面仸何具有 PV 的磁盘;
· pvdisplay :显示出目前系统上面的 PV 状态;
· pvremove :将 PV 属性移除,让该 partition 不具有 PV 属性
VG:Volume Group ,PE:Physical Extend
· vgcreate :就是主要建立 VG 的挃令啦!他的参数比较夗,等一下介绍。
· vgscan :搜寻系统上面是否有 VG 存在?
· vgdisplay :显示目前系统上面的 VG 状态;
· vgextend :在 VG 内增加额外的 PV ;
· vgreduce :在 VG 内移除 PV;
· vgchange :设定 VG 是否启劢 (active);
· vgremove :删除一个 VG 啊!
LV:Logical Volume
· lvcreate :建立 LV 啦!
· lvscan :查询系统上面的 LV ;
· lvdisplay :显示系统上面的 LV 状态啊!
· lvextend :在 LV 里面增加容量!
· lvreduce :在 LV 里面减少容量;
· lvremove :删除一个 LV !
· lvresize :对 LV 迚行容量大小的调整!
文件系统:
ext3用resize2fs命令调整文件系统的大小
放大 LV 容量
1. 用 fdisk 讴定新的具有 8e system ID 的 partition
2. 利用 pvcreate 建置 PV
3. 利用 vgextend 将 PV 加入我们的 vbirdvg
4. 利用 lvresize 将新加入的 PV 内的 PE 加入 vbirdlv 中
5. 透过 resize2fs 将文件系统的容量确实增加!
缩小 LV 容量
系统快照,记录LV的数据,用来备份还原更简单。
****************用户管理*****************
---用户、组管理---
/etc/passwd :保存用户基本信息
root:x:0:0:root:/root:/bin/bash
liaoyi:x:503:503::/home/liaoyi:/bin/bash
用户名:密码:uid:初始组gid:用户信息说明:home目录:shell
/etc/shadow:保存密码隐蔽信息
liaoyi:$1$JLdI8bpI$rUspzQp76wAnlFLKGXTUr/:16064:0:99999:7:::
用户名:密码:最近更动日期:不可更动天数:需要更改的天数:更改前提醒: 密码失效日期:账号失效日期:保留
/etc/group:保存组信息
liaoyi:x:503:
组名:组密码(/etc/gshadow很少用):gid:组支持的账号名称(非初始组)
每个文件只有一个所属用户和一个所属组。
一个用户支持多个组。
初始组:/etc/passwd组用户的GID对应的组,/etc/group中第四列为组支持的用户
有效组:touch新建文件默认使用该组。其他为次要支持的组。
groups 查看用户支持组,第一个为有效组。
newgrp *** 切换有效组
/etc/gshadow:保存组密码,组管理员
useradd
useradd newname(默认一个新用户,一个新组,一个home目录)
useradd -u UID username (指定用户ID)
useradd -g 初始组名 username (指定组)
useradd -G 次要组名 username (增加次要组)
useradd -c usrename 增加/etc/passwd中说明信息
useradd -d /home/cc username (指定home目录)
useradd -M username (强制不创建home目录)
useradd -m username (强制创建home目录)
useradd -s /bin/csh username 指定shell
useradd -r username 创建系统账号
useradd -r username (指定密码是否会失效/etc/shadow第七字段)
useradd -e username (指定密码失效日期/etc/shadow第八字段)
默认参考文件:
/etc/default/useradd useradd -D 查看,创建用户默认基本设置
/etc/login.defs UID,GID,密码参数默认设置
/etc/skel/* 家目录默认拷贝数据,.bashrc 等。
passwd
passwd 给当前用户增加或修改密码
passwd liaoyi 给指定用户设置密码
echo "abc3434" | passwd --stdin liaoyi 自动设置,可用在shell script中。
chage 显示,修改密码参数
usermod 修改用户模式
-l :后面接账号名称/etc/passwd 的第一栏
-u :后面接 UID 数字,即 /etc/passwd 第三栏;
-g :后面接初始群组,修改 /etc/passwd 的第四段
-c :后面接账号的说明,即 /etc/passwd 第五栏;
-d :后面接账号的家目录,即/etc/passwd 的第六栏;
-s :后面接 Shell 的实际档案,即/etc/passwd 的第七栏
例如 /bin/bash 或 /bin/csh 等等。
-L :将用户的密码冻结无法登入。其实仅改 /etc/shadow 的密码栏。
-U :将解冻 /etc/shadow 密码栏的
-f :后面接天数,为 shadow 的第七字段。
-e :后面接日期,格式是 YYYY-MM-DD 也就是在 /etc/shadow 的第八栏
-G :后面接次要群组,修改这个使用者能够支持的群组,修改的是 /etc/group
-a :与 -G 合用,可『增加次要群组的支持』而非『设定』喔!
userdel
userdel liaoyi:删除用户
userdel -r liaoyi:删除用户+home目录
用户功能
finger 查看/etc/passwd中的账户信息
finger 所有登陆的用户信息username,tty,logintime office等
finger +username 登陆用户的username,tty,logintime office等。
chfn change finger 更改用户信息
chfn 添加全名,号码,等账户信息
chsh change shell
chsh -l 查看所有的shell,即/etc/shells 中内容。
chsh -s /bin/bash 设置账户/etc/passwd中shell
id
id +username 查看用户UID,GID,所属组
groupadd 增加组
groupadd group1
groupadd -g gid group1
groupdel 删除组
groupdel group1
groupmod 修改组
groupmod -g new_gid -n new_name group1
---文件权限设置---
chgrp 修改文件所在组
chgrp group1 a.exe
chgrp -R group1 dir1 递归修改该目录下所有文件
chown 修改文件所有者
chown liaoyi file
chown -R liaoyi dir
chown liaoyi:group1 a.exe 一起修改
chown .group1 file 仅修改用户组
chmod change mode 改变模式(权限):
u:第一组 chmod u+x|u-w|u+r|u-rw|u=rwx 文件或目录名
g:第二组 chmod g+x|g-w|g+r|g-rw|g=rwx 文件或目录名
o:第三组 chmod o+x|o-w|o+r|o-rw|o=rwx 文件或目录名
a:所有模式 chmod a+x|a-x|a+rwx|a=wx 文件或目录名
chmod 777 hello.c
chattr 设置隐藏属性(+为增加属性,-为删除属性,)
chattr +i hello.c i为不能任何更改
chattr +a hello.c a为只能增加数据
lsattr hello.c 显示隐藏属性(隐藏属性只适用于ext2/ext3文件系统)
umask 默认掩码。
ACL权限:
ACL:Access Control List 针对单一用户,单一文件或目录进行权限设置
setfacl设置acl权限
getfacl取得acl权限
su 切换用户
su non_login shell方式登录root,环境变量不变
su - login shell方式登录root,环境变量为root
su -l liaoyi
exit 退出
sodo 切换身份执行命令
sudo -u liaoyi touch /tmp/mysshd
根据/etc/sudoers来判断是否可以使用别人权限,默认只有root可以。
(输入自己密码确认,root不用)
visudo 修改/etc/sudoers ,使得普通用户只需要输入自己的密码就能执行root的权限,可用于多人管理主机,并防止别人知道root密码。
PAM模块:
pluggable Authentication Modules 进行各种登陆数据验证。
/etc/pam.d/*
/etc/security/*
w 系统登录情况查询
who
last
lastlog
write 在线与用户交谈
wall
mail 离线状态下发邮件
****************网络配置*****************
一、网卡配置
/etc/sysconfig/network-scirpts/ifcfg-eth0
1.不启用dhcp,静态设置IP,NetMask,Gateway
IPADDR=
NETMASK=
GATEWAY= 注意:只能有一个网络接口上配置网关。
2.启用dhcp动态获得IP,NetMask,Gateway,DNS
DEVICE="eth0"
BOOTPROTO="dhcp"
HWADDR="00:0C:29:78:66:16"
IPV6INIT="no"
NM_CONTROLLED="no" //额外的网管软件
ONBOOT="yes"
TYPE="Ethernet"
UUID="7e6c156c-76b9-4d90-8dbb-9957b2f2022d"
service network restart
ifconfig
rount -n
ping 网关
二、主机名配置:
/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=localhost.localdomain
/etc/hosts 私有IP对应的主机名,局域网内使用
hostname 主机名
ping 主机名,显示主机名为修改过的后必须重启reboot。
三、DNS 服务器IP
/etc/resolv.conf
nameserver 111.8.14.18
nameserver 211.142.210.98
dig www.baidu.com
/etc/services
/etc/protocols
检测信息:/etc/udev/rules.d/70-persistent-net.rules
virtua machine setting -> network Adaper
Bridged 虚拟机中的IP使用本计算机网卡
NAT ->对应 VMnet8 共享本计算机的IP
Host-only ->对应 VMnet1
Custom -> (自己设定) 独立网卡(地址)
Lan segment
ifconfig ip配置
ping
ifconfig eth0 down/up
service smb start
netstat
ip地址设置
a、永久ip
1、 设置ip: setup
重启eth0 /etc/rc.d/init.d/network restart
或者service network restart
关闭防火墙 1.setup->firewall diabled(永久)
2.service iptables stop
2、 配置eth0 /etc/sysconfig/network-scripts/ifcfg-eth0
b、临时ip
ifconfig eth0 192.168.1.10 netmask 255.255.255.0
samba服务(widows<-->linux)
查看 rpm -q samba
安装 cd /media/redhat********./Service
rpm -ivh samba-3.0.25b-0.1e15.4.*86_64.rpm
rpm -ivh common-3.0.25b-0.1e15.4.*86_64.rpm
rpm -ivh client-3.0.25b-0.1e15.4.*86_64.rpm
配置 /etc/samba/smb.conf
a.共享目录(share不属于任何用户,nobody,不需要密码)
修改文件:
#=====================share difintions===================
a.security = share
b.[share]//共享文件夹区分
comment = abc//共享文件说明
path = /home/share//共享的目录(绝对路径)
public = yes//公用,任何用户可以访问
guest ok = yes//匿名访问
writable = yes//写
chmod 777 home chmod 777 share
setenforce 0 设置安全级别为0;
b.有用户目录(USR 需要用户名,需要密码)
#=====================share difintions===================
[root]
comment = Root Directories
browseable = yes
writable = yes
path = /
valid user = smb
; valid user = MYDOMAIN\%S
添加用户 useradd smb
smbpasswd -a smb
重启 /etc/init.d/smb restart
service smb start
windows链接:\\192.168.1.12
用户密码,映射网络驱动器
tftp
安装:rpm -ivh xinetd-2.3.14-10.el5.*86_64.rpm
rpm -ivh /home/tftp-server-0.42-3.1
配置:vi /etc/xinetd.d/tftp disable=no
启动:/etc/init.d/xinetd start
检查 netstat -a |grep tftp
****************软件管理*****************
软件管理器:
debian(ubuntu,B2D) --- dpkg --- apt-get
red hat(fedora,centOS,SuSE) --- rpm ---yum
RPM:已经编译好的软件,加上了很多软件信息。只能在系统版本一样的环境下安装,有依赖问题。安装数据在/var/lib/rpm中。用于查询升级删除等。
softname-**.rpm:一般使用
softname-devel-***.rpm:用于开发,一般不会安装。
SPPM:Source RPM 带源码,可在不同版本中使用。
YUM:解决软件依赖性问题,将软件保存在服务器不同容器里,在线安装时先下载软件清单,保存 在/var/cache/yum里面。根据清单并解决依赖问题安装。
rpm (redhat package manager)
ykpers-1.6.0-2.fc16.i686.rpm
1.软件名2.软件版本3.操作系统4.硬件体系
rpm -ivh /home/tftp-server-0.42-3.1 安装
(-i:install安装 -v:信息 -h:hansh"#"进度 )
rpm -evh samba 卸载
rpm -e tftp-server-0.42-3.1 删除
rpm -qa query all查询全部
rpm -q samba 查询是否安装
rpm -qi samba 列出软件详细信息
rpm -ql samba 勒出软件所有文件与目录文件名。
rpm -qc samba 列出软件的所有配置文件
rpm -qd samba 列出软件的所有帮助文件
rpm -qR samba 列出软件的依赖文件
rpm -qpR filename.i386 列出该软件包内的依赖文件数据。
rpm -qf /bin/sh 列出该文件属于哪一个已安装的软件
rpm -Uvh samba Update升级,未安装则开始安装。
rpm -Fvh samba 只升级已安装的软件。
rpm -V logrotate 查询软件是否改动过。没有则不显示任何信息
rpm -Vf /etc/crontab 查询系统文件是否改动过。
YUM使用
1.查询
yum list 查看所有软件列表(rpm -qa)
yum list updates 查看需要更新的软件列表
yum info mdadm 查看软件纤细信息(rpm -qi)
yum serch raid 搜索软件
yum provides passwd 查看文件属于哪个软件(rpm -qf)
2.安装
yum install pam-devel 先解决依赖软件问题再安装该软件
yum remove pam-devel 先解决依赖软件问题再卸载该软件
yum grouplist 查看软件组列表
yum groupinfo XFCE-4.4 查看该软件组详细信息
yum groupinstall XFCE-4.4 安装该组软件
3.系统自动升级
yum -y update 自动yes下载安装,与crntab搭配使用,可实现定时升级
4.rpm 设置
/etc/yum.repos.d/NeoKylin-Base.repo
版本一:
# NeoKylin-Base.repo
#
[base]
name=NeoKylin-$releasever - Base
gpgcheck=0
#baseurl=file:///media/NeoKylin-3.1-Server/
baseurl=ftp:///10.1.1.2/pub/kylin/3.1/x86_64
版本二:
[base]
name=CentOS-$releasever - Base
baseurl=file:///media/CentOS_5.8_Final/
#gpgcheck=0
#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
5.清除已下载过的所有容器的相关数据
yum clean all
其它安装:
1.带源代码安装
a. tar -xvzf sqlite-3.3.7.tar.gz -C /usr/local/src
b. cd src/sqlite
c. ./configure --prefix=/usr/local/sqlite//自动生成makefile(编译脚本文件)
//--prefix=/usr/local/sqlite//安装文件存放在指定目录下
d.make //执行Makefile文件(编译代码)
e.make install
f.make doc //安装帮助文档
g.make clean //清空安装时产生临时文件,资源
2.非源代码安装
a.tar -xvzf VMwareTools-8.4.2-261024.tar.gz
b.cd vmware-tools-distrib
c../vmware-install.pl
linux在线安装软件命令
yum 软件名
****************进程管理*****************
进程状态:激活: D(不能中断)R(运行) W(等待)
阻塞: T(暂停) S(睡眠sleep)
运行结束->1.父进程回收:wait,waitpid,(真正结束)
2.未回收:Z(僵尸)(init回收)。、
工作管理
前台进程--后台进程 bc& <---> fg+ID号/进程名
kill -9 15923 发送9号信号kill进程(SIGKILL)
kill -l 显示所有信号标示符
killall -9 bc 会报错 bc: arguments must be process or job IDs
脱机管理
nohup 在脱机或注销系统后还能继续工作。
ipcs 进程间通信
ipcs -m 共享内存 -s 信号量 -q 消息队列
进程管理
ps 将某个时间点的进程运行情况显示出来
ps aux (-a所有-u用户进程-x后台进程-f父进程)查看系统所有的进程
pstree 进程树
top 动态显示进程信息
进程执行顺序
进程优先级PRI,值越小,优先级越大
nice值NI ,调整PRI的值。
nice 给命令新的nice值
renice
系统资源查看
free 查看内存使用情况
uname 查看内核相关信息
uptime 查看系统启动时间与工作负载
netstat 跟踪网络
dmesg 分析内核产生的信息
vmstat 检测系统资源的变化
特殊文件与程序
fuser 通过文件找出正在使用该文件的程序
fuser -uv /root/hello.c 显示文件的打开者
fuser -muv /secbox 显示目录下所有文件的打开者(umount不掉的时候)
fuser -ki /root/hello.c 提示是否删除文件的使用者
lsof 列出被进程打开的文件名
lsof -u root root用户进程打开的所有文件
lsof /secbox | kssd 显示kssd在secbox目录打开的文件
pidof 找出某个正在执行的进程的PID
pidof init
SELinux
美国国家安全局研发,避免用户资源的误用,使用MAC强制访问机制
Subject Policy Context Object
主体进程 --> 策略 --> 安全上下 --> 目标文件资源(rwx,身份)
策略:targeted,默认策略,主要针对网络服务
strict:完整限制
安全上下文:Identify:role:type
主进程(domain) --》 文件 (type)
如:httpd(httpd_) --> /var/www/index.http(httpd_sys_content_t)
SELinux模式,切换需要重启。
enforcing /permissive 启动并强制/启动不强制仅提醒
disabled 不启动
内核关闭selinux:
/boot/grub/menu.lst selinux=0
调整模式和策略配置:
/etc/selinux/config
查看模式
getenforce
sestatus
切换模式:
setenforce 0 -->Permissive
setenforce 1 -->Enforcing
查看上下文:
ps aux -Z |grep httpd
ls -Z /var/www/index.html
重设安全上下文
chcon -t httpd_sys_content_t /var/www/html/index.html
restorecon -Rv /var/www/html/index.html
semanage fcontext -l |grep ‘/srv‘ 查看某文件默认上下文
semanage fcontext -a -t public_content_t "/srv/samba(/.*)" 增加默认上下文
策略与规则管理
策略--> 布尔值 --> 规则 --> 域--类型
/etc/selinux/targeted/policy/policy.21
seinfo 查看策略的信息
seinfo -b |grep httpd 查看与httpd有关的规则(blloeans)
sesearch -b httpd_enable_homedirs -a 查看布尔值信息
getsebool httpd_enable_homedirs 查看某布尔值
setsebllo -P httpd_enable_homedirs =0 关闭某布尔值
sesearch -a -t httpd_sys_content_t 查看文件类型相关信息
sesearch -a -s httpd_t -t httpd_* 查看进程域相关信息
selinux启动时,相关日志审计服务:
setroubleshoot:将错误信息写入/var/log/messages中。
cat /var/log/messages |grep setroubleshoot 查看selinux出错信息
sealert -l ************************ 查看完整出错信息
auditd:将详细数据写入/var/log/audit/audit.log 审计日志
audit2why < /var/log/audit/audit.log 查看出错信息
---例行工作---
常见例行工作:
1.调度logrotate进行日志文件的轮替
2.调度logwatch进行日志分析,并以邮件形式发给root。
3.调度ubpdatdb进行更新locate文件名数据库/var/lib/mlocate
4.更新whatis数据库。
5.更新rpm数据库
6.调度tmpwatch删除临时文件
7.分析网络服务的日志文件
at 仅执行一次(对应atd服务)
启动:/etc/init.d/restart
开机启动:chkconfig atd on
/var/spool/at/ at命令将要执行的工作做成脚本写到目录中,由atd服务脱机接管执行这些脚本文件。
使用at的账号限制
1./etc/at.allow 允许使用
2./etc/at.deny 限制使用(默认。在没有at.allow的情况下查看,较为松散。)
3.两个文件都没有,则只有root用于能使用at。
at now + 5 minutes ctrl + d 结束命令输入。
at 11:50 2013-12-04
at -l (相当于atq )查询系统上所有的at调度任务
at -d 3 (相当于atrm 3) 删除job 3 任务。
at -c 3 查看job 3 任务在/var/spool/at中的详细调度内容。
batch 系统有空时执行后台任务,使用和at一样。
cpu工作负载:执行的任务数量(batch在cpu工作负载低于0.8的时候执行工作任务。)
cpu使用率:cpu使用的多少。
crontab 循环执行 (对应crond服务)
/var/spool/cron/ 针对每个用户任务(crontab -l可查看)
root
/etc/crontab 针对系统任务(增加一个执行身份)
01 * * * * root run-parts /etc/cron.hourly(目录规划,自动执行目录下文件,可自定义 )
*/5 * * * * root /bin/mrtg /etc/mrtg/mrtg.cfg(直接执行命令)
/etc/cron.daily/:
cups makewhatis.cron prelink tmpwatch
logrotate mlocate.cron readahead.cron
/etc/cron.hourly/:
0anacron mcelog.cron
/etc/cron.monthly/:
readahead-monthly.cron
cron.weekly/:
99-raid-check
/etc/cron.d/* 针对系统任务(单一独立定时任务,需要增加一个执行身份,格式和crontab -e一样)
crontab命令将要执行的工作做成脚本写到目录中,由crond服务每隔一分钟去查询这三个文件
注意不要用vi直接编辑,可能出现语法错误导致无法执行crontab。
/var/log/cron 每项工作会记录在该日志文件中。
使用crontab的账号限制
1./etc/crontab.allow 允许使用
2./etc/crontab.deny 限制使用(默认。在没有crontab.allow的情况下查看,较为松散。)
3.两个文件都没有,则只有root用于能使用crontab。
crontab -e 进入vi界面编辑任务,每一行一个任务。每个用户在/var/spool/cron/中都有一个文件
六段:分 时 日 月 周 命令
特殊字符:*全部 ,和 -一段时间 /n每隔n时间
例:
/1 * * * * /bin/date > /dev/pts/0
/5 * * * * /home/liaoyi/test.sh
59 23 1 5 * mail yu < /home/liaoyi/lover.txt
crontab -l 查询系统crontab任务
crontab -r 清除所有任务
anacron
在处理系统非24小时开机而导致某些crontab任务未执行,在开机或者crontab中,crontab会调用anacron程序来执行crontab未进行的工作。
/var/spool/anacron/*
/etc/annacrontab
#period in days delay in minutes job-identifier command
1 5 cron.daily nice run-parts /etc/cron.daily
7 25 cron.weekly nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly nice run-parts /etc/cron.monthly
---系统服务---
(service=daemon)
stand alone daemon:自行单独启动服务(WWW服务fttpd,FTP服务vsftpd)
super daemon :超级daemon统一管理(telnet)
优点:1,可安全管控,类似网络防火墙
2.客户端连接结束后关闭,不用占用资源
缺点:反应时间慢
/etc/init.d/* 系统服务启动脚本
/etc/rc.d/init.d/*
/etc/sysconfig 系统服务的初始化环境配置文件
syslog 日志文件配置
network 网络设置
/etc/xinetd.conf,/etc/xinetd.d/* :Super daemon配置文件
/etc/* 各服务各自的配置文件
/var/lib/* 各服务产生的数据库
/var/run/* 各服务的程序的PID记录
syslogd.pid
Stand along的启动:
1./etc/init.d/syslog start(stop/restart/status...)
service snmpd start(stop/restart...)
super daemon 的启动:
grep -i ‘disable‘ /etc/xinetd/* 查看xinetd下的服务是否启动,yes未启动。
例:打开xinetd下的rsync服务
vim /etc/xinetd.d/rsync
disable = no
/etc/init.d/xinetd restart
查看启动的端口:
grep ‘rysnc‘ /etc/services
netstat -tnlp | grep 873
super daemon 的配置:
/etc/xinetd.conf
/etc/xinetd.d/*
查看系统启动的服务:
ps aux |grep snmpd
top
netstat -tulnp 找出目前系统开启的tcp,udp监听的网络服务
netstat -atunp 找出所有的有网络的服务状态(包含socket状态)
service --status-all 查看目前系统上所有服务的运行状态
设置开机立即启动服务
chkconfig:管理系统服务默认开机启动与否
chkconfig --list snmpd 查看服务是否开机启动
chkconfig --level 345 atd on 开机启动服务(并没有立即启动服务)(指定等级)
手动建立开机启动脚本:
vim /etc/init.d/myup
#!/bin/bash
#chkconfig:2345 50 32 (等级2345启动,以50顺序启动,以32顺序结束)
#description:nothing
echo "nothing"
chkconfig --add myup;chkconfig --list myup 在rc.d/rc2-5中增加启动链接文件S50myup
chkconfig --del myup; rm /etc/init.d/myup 删除启动链接
图形化界面启动:
ntsysv:redhat中图形界面管理服务启动
setup -> sevices
****************日志管理*****************
日志文件的作用:
1.解决系统方面的错误
2.解决网络服务的问题
3.过往事件记录簿
常见日志文件:(/var/log/*)
anaconda.log ConsoleKit messages spooler
anaconda.program.log cron ntpstats sssd
anaconda.storage.log cups pm-powersave.log tallylog
anaconda.syslog dmesg ppp wpa_supplicant.log
anaconda.xlog dmesg.old prelink wtmp
anaconda.yum.log gdm sa Xorg.0.log
audit httpd samba Xorg.0.log.old
boot.log lastlog secure Xorg.9.log
btmp maillog snmpd.log yum.log
boot.log:记录了系统在引导过程中发生的事件,就是linux系统开机自检过程显示的信息
dmesg 开机内核检测信息(dmesg命令可查看)
cron 例行性工作调度日志
用户登录及连接时间信息
lastlog 系统所有账号最近一次登录系统时的信息(lastlog命令可查看)
/var/run/utmp 记录有挂当前登录的每个用户的信息(who ,w,users,finger)
who: 查看当前登录到系统的账户,终端,登录时间。
w: 查看当前系统中的用户,终端,登录时间,和他们运行的进程信息
users:在一行显示当前登录的用户名。
wtmp,faillog 记录所有正确登录系统者的信息(wtmp)和错误登录账户信息(faillog)(last查看wtmp)
last:显示系统所有登录信息(当前+过往)
ac 根据当前/var/log/wtmp文件,显示用户的连接时间(小时)
(ac 总时间 ac -d 每天连接时间 ac -p 每个用户总的连接时间)
secure 记录所有需要账号密码的软件的登录信息(login,图形登录gdm,su,sudo,联机登录 ssh,telnet)
错误日志:
messages 系统错误信息
进程统计:
touch /var/log/pacct
accton /var/log/pacct 激活accton
lastcomm 监测系统中任何时候执行的命令,用accton关闭。
sa 报告,清理并维护进程统计文件
其他常见服务日志:
maillog或 mail/* 记录邮件往来信息(sendmail发信协议SMTP,dovecot收信协议POP3)
http/* ,news/*,samba/* 不同的网络服务的日志文件
所需系统服务:
syslogd 主要记录登录系统与网络等服务的信息
klogd 主要记录登录内核产生的信息
logrotate 主要进行日志文件的轮替功能
syslogd服务
ps aux | grep syslogd 查看syslog是否启动
chkconfig --list syslogd
/etc/init.d/rsyslogd start 启动syslogd服务
service rsyslogd start
注意:/var/log/下的日志文件vi编辑wq保存,修改后不能再继续进行日志操作。需要重新启动syslogd。
1.时间发生的日期与格式
2.发生此事件的主机名
3.启动此事件的服务名称或函数名称
4.该信息的实际数据内容
syslog的配置文件
/etc/syslog.conf
服务.信息等级 文件或设备或主机
服务名称:syslog本身设置有一些服务:如auth,cron,daemon,kern,lpr,mail,news,syslog,usr,uucp等。
软件开发商利用这些服务来记录他们的软件。
信息等级:info-> notice ->warning ->err ->crit ->alert ->emerg
“.”代表大于等于该等级
“.=”表示等于该等级
“.!”表示除了该等级以外的所有等级
设备或文件:代表信息放着在哪里,是输出到设备还是记录到文件。
文件的绝对路径:/var/log/里的文件
打印机或其他:/dev/lp0
用户名称:显示给用户
远程主机:例如:@192.168.1.1
*:代表所有在线的人。
日志文件的安全设置:
chattr +a /var/log/messages 给日志文件加上a属性,只能增加不能修改和删除。
日志服务器设置:
客户端的日志会备份到主机上保存。服务器的syslogd监视UDP的514端口。
配置服务端:
vim /etc/sysconfig/syslog
SYSLOGD_OPTIONS="-m 0 -r"
/etc/init.d/syslogd restart 重启服务
netstat -lunp |grep syslog 查看syslogd服务是否监听514端口
配置客户端:
vim /etc/syslog.conf
*.* @192.168.1.1 将所有服务的所有等级信息备份到主机(IP)上。
/etc/init.d/syslogd restart
logrotate 日志文件的轮替
logrotate是挂载cron下面进行的例行工作。/etc/cron.daily/logrotate
配置参数:
/etc/logrotate.conf
/etc/logrotate.d/
目录转储:
/var/log/news/* {
monthly
rotate 2
olddir /var/log/news/old
missingok
postrotate
kill -HUP ‘cat /var/run/inn.pid‘
endscript
nocompress
}
分析日志文件:
logwatch套件
logcheck,需要自行安装
logfile-0.1-4-2.tgz 鸟哥日志分析工具
****************系统信息*****************
---查看服务器信息---
hostname 主机名
runlevel 运行等级
tty 终端名
uname 系统信息 uname -a
cal calendar 日历 cal 2013 cal 4 1992
date date and time 时间 data +%Y/%m/%d +%H:%M
系统资源查看
free 查看内存使用情况
uname 查看内核相关信息
uptime 查看系统启动时间与工作负载
netstat 跟踪网络
dmesg 分析内核产生的信息
vmstat 检测系统资源的变化
---登录界面信息---
登录前显示:
/etc/issue
/etc/issue.net (telnet连接时显示)
登陆后显示:
/etc/motd
---bash环境---
环境变量(系统级,一般大写)
常用:PATH可执行程序路径;LD_LIBRARY_PATH库文件路径;
LOGNAME登陆用户;HOSTNAME主机名
echo $LANG 输出当前语言环境变量(可在/etc/sysconfig/i18n中修改默认语言)
LANG=en_US 修改成英文语系
env 显示所有环境变量
set 显示所有变量
unset 删除该变量
env | grep PATH 查询某变量
export AA=123 导出为环境变量
echo $PATH 显示该环境变量值
export PATH=$PATH:/home 修改环境变量
系统环境变量配置文件:
/etc/profile
设置 PATH,MAIL ,USR,HOSTNAME,HISTSIZE 系统环境变量
读取: /etc/inputrc 输入按键环境变量
/etc/profile.d/*.sh vi,ls,which别名
/sysconfig/i18n 语系变量
用户环境配置文件:
~/.bash_profile
PATH=$PATH:$HOME/bin
读取~/.bashrc non-login shell仅读取该文件
设置rm,cp,mv别名
读取/etc/bashrc
根据UID设置umask
根据uid设置PS1命令行提示符
读取/etc/profile.d/*.sh
添加自己的环境变量, 不注销,重新运行bashrc:
source ~/.bashrc
. ~/.bashrc
其他相关配置文件:
/etc/man.config man寻找路径,MANPATH,tarball安装软件后可添加。
.bash_history 用户操作历史命令,数量和HISTSIZE变量有关,用户登陆载入内存。
.bash_logout 用户注销后执行。默认只有clear清屏
---终端机tty环境---
stty -a 查看所有快捷键
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>;
start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
Ctrl+C:intr 发出SIGINT中断程序
Ctrl+\:quit 发出SIGQUIT退出程序
ctrl+Z:susp 发出SIGTSTP信号暂停进程
Ctrl+D:eof 结束输入
Ctrl+S:stop 停止屏幕输出
Ctrl+Q: start 继续程序屏幕输出
Ctrl+W:werase 清除前一个单词
Ctrl+U: kill 清除命令行所有文字
Ctrl+?:erase 回到之前的输入
Ctrl+R :rprnt 查找之前命令
Ctrl+V:lnext 下次tab键执行空格
Ctrl+M: Enter回车
****************VIM编辑****************
vim配置文件:/etc/vimrc 一般不修改
~/.vimrc 添加这个文件,添加vim默认设置
[root@localhost ~]# cat .vimrc
set hlsearch
set backspace=2
set autoindent
set ruler
set showmode
set nu
set bg=light
syntax on
命令行模式:esc
移动: ^ ←h ↓j ↑k →l $
gg,1G 跳到头行
56G 跳到某行
G 跳到尾行
删除:x/X删除字符
dd删除 3dd删除3行
d1G删除光标到开头行 dG删除光标到最后行
d^删除一行中光标到开头字符 d$删除一行中光标到结尾字符
复制: yy复制一行 3yy复制3行
y1G复制光标到开头行 yG复制光标到最后行
y^复制一行中光标到开头字符 y$复制一行中光标到结尾字符
粘贴: p/P粘帖到光标下一行(上一行)
撤销 u / Ctrl+r
查询 /name ?name n/N
可视化选择:v,V,Ctrl+v 选择 y复制 p粘贴 d删除
保存退出 ZZ 相当于:wq!
其他:shift+~大小写转换
gg=G自动排版
编辑模式 ←I i|a A→
o/O在下一行插入/在上一行插入
r/R替换一个字符/替换所有字符
底行模式 :
退出: q 退出
q!不保存(强制)退出
保存退出:wq 保存退出
w newfilename另存为
替换:n1,n2s/word1/word2/g 在n1行和n2行之间替换
1,$s/word1/word2/g 全文替换
1,$s/word1/word2/gc 全文替换,替换前询问
设置: set nu设行号
执行其他命令: !shell命令 不退出执行shell命令
多文件编辑:单窗口:files,n,N
多窗口:sp filename Ctrl+w+↓ Ctrl+w+↑
1. :%s/root/rt/g
%:在所有行中执行替换,如果去掉"%"则只替换当前行
s:替换操作
g:替换行中的所有匹配点
2.:%s/\/usr\/bin/\/home/g
\/usr\/bin: "\" 转义 目录字符"/"
\/home: "\" 转义 目录字符"/"
3.:%s/^/linux/g 每行开头加入一个单词linux
^:每行开头
4.:%s/$*\>/s/g 每个单词后面加上一个s
$:每行结尾
5.:%s/\s\+$// 去掉每行后面的空格字符
\s:空格
\+:一个或多个
$:每行结尾
/:空
中文编码问题:
1.查看linux系统默认支持的语系:/etc/sysconfig/i18n
2.中断接口bash的语系:LANG变量
3.文件本身编码格式
4.打开文件的软件设置的显示编码
DOS 与linux断行字符:^M$ $
UNIX2dos -k man.config
dos2UNIX -k -n man.config man.config.linux
文件编码格式转换:
iconv -f big5 -t utf8 vi.big5 -o vi.utf8
****************X Window System************
X Window System
X :1 &
Xterm -display :1 &
xterm -dispaly :1 &
xclock -display :1 &
xeyes -dispay :1 &
twm -display :1 &
****************其他*****************
fedora16配置:
解除root 屏蔽
开机进入service recover
cd /etc/pam.d
vim gdm 加#注释第三行 user!=root
vim gdm-password 加#注释第三行 user!=root
reboot
安装vm工具:
VM ->install vmware tools
VMwareTools-8.8.2-590212.tar.gz 复制到 /tmp
解压 tar -xvf VMwareTools-8.8.2-590212.tar.gz
进入/vmware-tools-distrib
./vmware-install.pl 安装
reboot
root 无密码登陆
开机进入service recover
cd /etc
vim pssswd
把第一行*去掉。
reboot
附加:
windows目录
C:\Program Files (x86)\sina
linux目录
/home/test/socket
windows下网络:
连接对方SAMBA:\\192.168.1.10
http://www.sina.com.cn
无线文件ftp共享:ftp://192.168.1.8 登陆