pwd 显示当前目录的绝对路径
mkdir 建立目录
rmdir 删除空目录
echo $PATH 打印环境变量,同名可执行文件先找到的先执行
PATH="$PATH":/root 将root目录添加到PATH中,使用这种方法,只对当前会话有效,也就是说每当登出或注销系统以后,PATH 设置就会失效
2.#vi /etc/profile 在适当位置添加 PATH=$PATH:/etc/apache/bin (注意:= 即等号两边不能有任何空格) 这种方法最好,除非你手动强制修改PATH的值,否则将不会被改变
3.#vi ~/.bash_profile 修改PATH行,把/etc/apache/bin添加进去 这种方法是针对用户起作用的
临时修改path : export PATH="/tmp:$PATH"
永久生效: 修改/etc/profile,source使得修改理解生效
cp -l 实体连接(hard link) -s 符号链接(symbolic link虚拟链接,快捷方式)
rm \rm -r /tmp/etc 指令前加反斜杠,可以忽略掉alias的指定选项
mv
basename 取得文档名 eg: basename /etc/sys/network ---> network
dirname 取得目录名 eg: dirname /etc/sys/network --> /etc/sys
cat 由第一行开始显示档案内容
tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
nl 显示的时候,顺道输出行号!
more 一页一页癿显示档案内容
less 不 more 类似,但是比 more 更好的是,他可以往前翻页!
head 叧看头几行 -n:n 为数字,前n行,
tail 叧看尾巳几行 -n:n 为数字,后n行。 -f 跟踪一个文件尾部的实时变化
od 以二迚制癿方式读取档案内容!
more/less:
空格键 (space):代表向下翻一页;
Enter :代表向下翻『一行』;
/字符串 :代表在这个显示的内容当中,向下搜寻『字符串』这个关键词;
:f :立刻显示出文件名以及目前显示的行数;
q :代表立刻离开 more ,不再显示该档案内容。
b 或 [ctrl]-b :代表往回翻页,不过这动作叧对档案有用,对管线无用。
n :重复前一个搜寻 (不 / 或 ? 有关!)
N:反向的重复前一个搜寻 (不 / 或 ? 有关!)
q:离开 less 这个程序;
touch 修改档案时间或建立新档
umask : 目前用户在建立档案或目录时候的权限默认值,
查阅的方式有两种,一种可以直接输入 umask ,就可以看到数字型态的权限设定分数, 一种则是加入 -S (Symbolic) 这个选项,就会以符号类型的方式来显示出权限了,
umask 的分数指的是该默认值需要减掉的权限!
档案的隐藏属性 :修改文档的属性不可修改,安全机制方面
chattr : 只能在ext2/ext3文件系统中使用,设置隐藏属性,eg: chattr +i test 不能删除
lsattr : 查看隐藏属性
档案特殊权限: SUID(二进制文档), SGID(二进制文档或目录), SBIT(目录)
权限显示s,t 等(非 r, w , x)
file :观察文件类型, 属于 ASCII 或者是 data 档案,或者是 binary , 其中有没有使用到动态函式库 (share library) 等等的信息
搜索
which : 寻找执行档, 因为 which 是根据用户所设定的 PATH 变量内的目录去搜寻可执行文件的.eg: which -a ls 输出所有找到的ls路径
whereis : [-bmsu] 档案或目录名,搜索特定档案,whereis 不 locate 是利用数据库杢搜寻数据,所以相当快速,并没有实际的搜寻硬盘, 比较省时间
locate : [-ir] keyword, 后面输入档案癿部分名称后,就能够得到结果,寻找的数据是由『已建立的数据库 /var/lib/mlocate/』里面的数据所搜寻到的,而数据库的建立默讣是在每天执行一次 (每个 distribution 都不同,CentOS 5.x 是每天更新数据库一次!更新 locate 数据库直接输入 updatedb 就可以了
ln 实体链接和符号链接
dumpe2fs [-bh] 装置文件名,查看文件系统信息
df:目前挂载的装置,列出文件系统的整体磁盘使用量;
du:评估文件系统的磁盘使用量(帯用在推估目彔所占容量)
fdisk 磁盘分区,fdisk 没有办法处理大于 2TB 以上的磁盘分区槽,parted 这个指令可以处理
partprobe <==强制让核心重新捉一次 partition table,不用重启就能重新读取分割表
mkfs 格式化磁盘
mke2fs 设定格式化的指令,
磁盘检验
fsck:检查文件系统是否出错。一般系统出现非常重要的问题的时候才使用。刚格式化以后可以使用检测,fsck 会损坏filesystem 所以检查时partition务必不可挂载在系统上,既卸载状态。其实是呼叫e2fsck软件
badblocks:用来检查硬盘或软盘扇区有没有坏轨。不太使用。
mount: 挂载文件系统,可配置项非常多,重新挂载mount -o remount,rw,auto / ,当进入单人维护模式,根目录会被系统挂载为只读,这是指令很重要
mount --bind 挂载某个目录到其他目录,用于不能软连接等情况。
unmount 将装置档案卸载。
mknod:磁盘参数修订,主要装置代码(Major), 次要装置代码(minor) 装置核心数据由这两个数值来决定。
e2label : 设定文件系统标头
tune2fs : 转换ext2到ext3 ,等。
hdparm : IDE接口 进阶参数设置。基本用于测试性能。
开机挂载 /etc/fstab 及 /etc/mtab
swap 建立交换空间
dd 新增文档
parted 分割2T以上的分隔槽
压缩
*.Z :compress 程序压缩的档案;
*.gz : gzip 程序压缩的档案;
*.bz2 :bzip2 程序压缩的档案;
*.tar :tar 程序打包的数据,并没有压缩过;
*.tar.gz :tar 程序打包的档案,其中并且经过 gzip 的压缩
*.tar.bz2 : tar 程序打包癿档案,其中并且经过 bzip2 的压缩
常见解压缩命令:compress已经退出潮流了, gzip和bzip2都是对目录中的没个档案分别进行压缩,整体的话需要用tar打包
gzip : 可以解开compress,zip,gzip压缩的文档
bzip2 : 仅能针对一个档案压缩与解压,配合tar使用,更好
tar :打包, --exclude="file" 排除那些文件不打包
zcat 则可以读取纯文本档被压缩后的压缩文件!
压 缩:tar -jcv -f filename.tar.bz2 要被压缩的档案或目录名称
查 询:tar -jtv -f filename.tar.bz2
解压缩:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录
dump :备份,制定等级,指定等级为 1 时,此时新备份的数据只会记录不第一次备份所有差异的档案而已,支持整个系统文件或者单一个别目录
但是有所限制,限制:
o 所有的备份数据都必项要在该目录 (本例为:/home/someone/) 底下;
o 且仅能使用 level 0 ,亦即仅支持完整备份而已;
o 不支持 -u 选顷,亦即无法建立 /etc/dumpdates 这个各别 level 备份癿时间记录文件;
restore :复原dump备份文件
mkisofs : 建立映像当文件(iso)
cdrecord : 将印象文件刻录至光盘或DVD当中
dd : 新增文档,备份文件 dd if="input_file" of="output_file" bs="block_size" \ > count="number" 备份整个partition或整颗disk
cpio :可以备份任何东西,但是不会主动去找档案来备份,需要配合find等
[root[[[[[[[[[[[[[[[[[[[[[@www](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater) ~]# cpio -ovcB > [file|device] <==备份
[root[[[[[[[[[[[[[[[[[[[[[@www](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater) ~]# cpio -ivcdu < [file|device] <==还原
[root[[[[[[[[[[[[[[[[[[[[[@www](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater)](http://my.oschina.net/licomernwater) ~]# cpio -ivct < [file|device] <==察看
ctrl + z 退出vim,有 .test.swp文件
kill -9 %1 仿真断线停止vim工作
sudo lsof -i :9000 查看9000端口被谁占用
=============================================================
Linux CentOS使用笔记
uname -m 查看当前系统版本
uname -a 可以查看到更详细的版本
yum grouplist 查看安装列表
启动或重启网卡
ifup eth0
/etc/init.d/network restart
等价 service network restart
关闭防火墙
/etc/init.d/iptables stop
永久关闭防火墙
chkconfig iptables off
//打印
echo “hhh” > test.txt // 清空后复制,覆盖
echo “hhh” >> test.txt // 文件末尾追加内容,不清空
//特殊字符
> 重定向,会清除文件内所有以前的数据
>> 追加内容,文件末尾追加内容不会删除已有内容
//cat 追加内容, EOF成对出现,可以被任意成对内容替换
cat > ~/data/test.txt <<EOF
this is a test !
EOF
//箭头的指向就是数据的流向
> 或 1>
>> 或 1>>
< 或 <0 输入重定向
<< 或 <<0 追加输入重定向
1. 标准输入 (stdin) : 代码为0, 使用< 或 << 数据流向从右向左
2. 正常输出 (stdout) : 代码为1, 使用> 或 >> 数据流向从左向右
3. 错误输出 (stderr) : 代码为2, 使用 2> 或 2>>
cp 拷贝 -a :相当于 pdr , -r 递归,用于复制目录; -p 保持属性不变
find /path -type f -exec rm -f {} ; 删除指定文件
也可以用: find /path -type f | xargs rm -f
xargs :将前面查找到的内容在后面一个一个处理
find -type:按类型 -name:按名字 !取反 -a: and 两个条件同时成立 -o: or 两个条件有一个成立
//eg: find /path -type f ! -name="cc.txt" //查找在path下除了cc.txt的文件
// grep 用法 , 例如取特定值
head -3 文件 取前三行,默认head取10行
grep "特定内容" 文件名 在文件中取特定内容
grep -v "特定内容" 文件名 -v 排除那一项 排除内容以外的内容取出来
-o:输出精确匹配 -i 不区分大小写 -E 过滤多个字符,同egrep eg : grep -E "3306|3309" /etc/services
cat 文件名 | grep -v "内容" //在内容多的时候慢,需要装管道,比直接使用慢
sed -n '/特定内容/p' 文件名 查询特定内容
sed '/特定内容/d' 文件名 除了特定内容以外的东西
// -n 取消sed默认输出,改变输出内容不改变文件内容 -i:改变文件内容 p:打印 d:删除
//sed 替换 重要
1. 改变输出: sed 's#要替换的内容#替换内容#g' 文件名 eg: sed 's#text#repace#g' test.txt
2. 连内容一起修改: sed -i's#要替换的内容#替换内容#g' 文件名
-i:修改文件内容 s:查找全文并替换 g: 与s联合使用表示全局替换 #:分隔符,可以使用/@等替换
sed -r 's#(正则)#\1#g' 文件名 用正则匹配获取内容打印 eg:sed -r 's#(.*)#\1#g' test.txt
//安装软件
yum linux包管理器 yum install 包名 ==>底层也是调用rpm 只是会自动装依赖
软件包下载下来 rpm格式 : rpm -ivh 包名.rpm i: 安装 v:显示输出 h:人类可读
rpm 安装最大问题: 依赖问题不好解决,需要自己安装依赖
源代码 1)./configure 2)make 3)make install
yum update 在线上机器不能使用,除非已经知道安全漏洞
alias 设置别名, ‘=’ 右边必须是个命令,不能直接是字符串 如: alias pri='this is a test!'
eg :alias pri='echo "this is a test!"'
unalias 取消别名
//命令行设置:临时生效,重启后无效,如需永久生效,
当前用户:修改用户目录下的 ~/.bashrc 文件
所有用户:修改/etc/.bashrc 或 /ect/profile文件
修改后使用source 命令生效配置。
取20到30行的数据
1. head -30 test.txt | tail -11 //效率不好
2. sed -n '20,30p' test.txt //常用,如:‘30p’ 只取30行
3. awk '{if(NR<31 && NR>10) print $1"\n"}' test.txt NR:表示行号
//awk 使用,一门语言,可以过滤,打印,删除,过滤内容最好是取 "列"
1.打印(默认使用空格分隔列):awk '{print $1}' 文件名 $n:第n列 print:打印命令
2.打印(使用":" 作为分隔符) awk -F ":" '{print $1}' 文件名 -F:使用特殊符号分割
3.打印自己添加分隔符 awk -F ":" '{print $1"="$2"="$3}' 文件名
4. $NF:最后一列 awk '{print $NF}' 文件名
总结三剑客:
grep :擅长过滤
sed: 擅长取行
awk: 擅长取列
上下文控制:(取20到30的数据)
-A 除了显示匹配的一行之外,并显示该行之后的num行, grep 20 -A 10 test.txt
-B 除了显示匹配的一行之外,并显示该行之前的num行 grep 30 -B 10 test.txt
-C 除了显示匹配的一行之外,并显示该行前后各num行, grep 25 -C 5 test.txt
echo {1..10} 从1打印到10 {开始..结束} 输出字符序列或数字序列 eg: mkdir stu{1..100} 创建100个目录
history 打印用户操作历史
快捷键
ctrl + a : 回到命令的开头
ctrl + e : 回到命令的结尾
ctrl + u : 把光标以前的剪切
ctrl + k : 把光标以后的切掉
ctrl + c : 中断
ctrl + shift + c : ssh 客户端CRT 粘贴
ctrl + shift + v : ssh 客户端CRT 复制
ctrl + l 清屏
ctrl + d 退出 相当于 exit
ps -ef 查看进程
netstat -lntup 查看端口
cat /etc/redhat-release //查看版本
uname -r 内核
uname -m 32位还是64位
hostname 主机名
whoami 查看当前用户
echo $PS1 //这个变量控制 [root@www ~]# 显示
su 角色 角色切换
su - root // -参数切换用户变量,替换为root的环境变量
从普通用户到root,需要输入root密码,从root切到普通用户不需要密码
linux 基本优化
1. 关闭SELinux 功能,该功能阻断服务,使用其他安全方式替换
1)永久关闭
cat /etc/selinux/config
enforcing 开启
permissive 警告
disabled 关闭
将SELINUX=enforcing改为SELINUX=disabled 重启机器即可
2)临时关闭(不用重启机器),适用于不能重启工作机器的服务器:
getenforce 查看当前selinux开启状态
setenforce 0 设置SELinux 1:启用 0:关闭
2. 运行级别
tail /etc/inittab 查看运行级别
0:关机状态
1:单用户模式
2:多用户,但是没有NFS 模式
3:完全多用户,(工作一般选这个模式)
4:没使用
5:桌面模式
6:重启模式
runlevel 查看当前运行几倍
init 5 切换运行模式
3. 精简开机启动
需要启动的:
1. sshd ssh服务
2. rsyslog 系统日志
3. network 网络
4. crond 定时任务
5. sysstat 系统性能及效率工具 iostat/mpstat/sar
chkconfig --list 查看所有服务在哪个级别上开关情况
chkconfig --list | grep 3:on
chkconfig --level 级别 名字 off 关闭服务 chkconfig --level 34 atd off 3,4 级别关闭
//防火墙
iptables -L -n 查看当前防火墙,默认打开
/etc/init.d/iptables stop 停止防火墙
/etc/init.d/iptables status 查看防火墙状态
at 参数 时间 定时计划任务,只是想要让特定任务运行一次
ps -ef |grep atd 查看计划任务是否开启
at 5pm + 3 days 三天后下午五点执行命令, 输入后再at> 后输入命令,ctrl+c 退出
atq 查看已经设置的计划任务
atrm 序号 删除已经设置的任务
at -c 编号 显示已经设置的任务内容
在/etc/at.allow (允许名单)和 /etc/deny (不允许名单)两个文件来设置at的使用权限,如果都不存在则只有root可以使用
cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。
/sbin/service crond start//启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload//重新载入配置
/sbin/service crond status//查看服务状态
crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
crontab -l //列出某个用户cron服务的详细内容
crontab -r //删除某个用户的cron服务
crontab -e //编辑某个用户的cron服务
ssh 配置修改
/etc/ssh/sshd_config 修改这个文件
/etc/ssh/ssh_config linux 本身client不用管
Port :端口
ListenAddress 监听地址,改为内网
PermitRootLogin no 禁止root权限登录
UseDNS no 禁止使用dns跳转,直接使用ip访问
GSSAPIAuthentication no 通过SSH登陆服务器时候会有些会很慢,将慢的设置为no
//对比
diff 文件 对比文件
vimdiff 高亮显示对比文件
ulimit -n 查看默认文件描述符 (1024)
ulimit -SHn 65535 修改默认描述符数量,临时改
永久改:
1)/etc/rc.local 中放入 ulimit -SHn 65535
2)echo '* - nofile 65535' >> /etc/security/limits.conf nofile连接数,-软硬连接都包括
系统内核优化
vim /etc/sysctl.conf
sysctl -p 生效
修改linux软件名和内存名
vim /etc/issue
vim /etc/issue.net
锁定系统重要文件
chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab
解除 -i
//grub引导菜单加密码, linux 引导器密码
/sbin/grub-md5-crypt grub密码
password --md5 密码 放在
//禁止Linux系统被ping
net.ipv4.icmp_echo_ignore_all = 1 //修改内核参数,这样自己也ping不了
一般使用iptables
wget url 下载
wget -O url 指定改成什么名字
wget --spider 爬虫,模拟爬虫检查是否可以访问,不会下载只是检查
wget -T / --timeout = seconds 超时时间
wget -r / --tries=2 指定重试的次数
wget -q / --quiet 安静的下载,关闭输出