您的位置:首页 > 运维架构 > Linux

linux学习--未整理命令

2016-07-18 00:00 302 查看
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 删除用法
find /path -type f -exec rm -f {} ; 删除指定文件

-type f:文件 d:目录

-exec 执行命令

{} 查找到的内容

; bash特殊含义需要用 '' 转义 合起来为 ;

也可以用: 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 安静的下载,关闭输出
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: