码迷,mamicode.com
首页 > 系统相关 > 详细

Linux基础命令

时间:2016-07-20 06:40:37      阅读:290      评论:0      收藏:0      [点我收藏+]

标签:

0x00 Linux基础

学习基本的linux命令操作,对于我们熟悉linux或者unix系统还是很有帮助的。

0x01使用命令帮助

 -h --help man info

1.1 经常的命令帮助 #history -h 或者 #history --help
1.2对于命令的具体参数及使用方法,#man history 或者info history
man {1|2|3..|9] history
(1)、用户可以操作的命令或者是可执行文件
(2)、系统核心可调用的函数与工具等
(3)、一些常用的函数与数据库
(4)、设备文件的说明
(5)、设置文件或者某些文件的格式
(6)、游戏
(7)、惯例与协议等。例如Linux标准文件系统、网络协议、ASCⅡ,码等说明内容
(8)、系统管理员可用的管理条令
(9)、与内核有关的文件
$man -k keyword #查询关键字 根据命令中部分关键字来查询命令,适用于只记住部分命令的场合
$man -k GNOME config| grep 1 #查找GNOME的config配置工具命令
1.3 查看命令在哪个位置 which
#which history
驱动安装:格式化U盘:为ext或者fat格式,把驱动放在U盘上
Ctrl + Alt + F2 --文本界面
Ctrl + Alt + F6 --图形界面
Ctrl + Alt + F7 --第一个图形界面
Ctrl + Alt + F8 --第二个图形界面


0x02. 文件及目录管理

2.1. 创建和删除
创建:mkdir
删除非空目录:rm -rf file(具体路径)
删除日志 rm *log (等价: $find ./ -name “*log” -exec rm {} ;)
移动:mv /root/Desktop/1 root/Desktop/2
复制:cp (复制目录:cp -r )
#find ./ | wc -l #查看当前目录下文件个数:
#cp -r source_dir  dest_dir #复制目录:
2.2. 目录切换 cd pwd 
找到文件/目录位置:cd
切换到上一个工作目录: cd -
切换到home目录: cd 或者cd ~
显示当前路径: pwd
更改当前工作路径为path: $cd path
2.3. 列出目录项 ls
显示当前目录下的文件 #ls -a
按时间排序,以列表的方式显示目录项 ls -lrt
#ls | cat -n #给每项文件前面增加一个id编号(看上去更加整洁)
2.4. 查找目录及文件 find locate
#find ./ -name "core*" #搜寻文件或目录
#find ./ -name ‘*.o‘ #查找目标文件夹中是否有obj文件
#find ./ -name "*.o" -exec rm {} \; #递归当前目录及子目录删除所有.o文件:
$updatedb #需要定期执行更新命令来更新索引库
$locate history
2.5. 查看文件内容 cat vi head tail more
cat -n #显示时同时显示行号
$ls -al | more #按页显示列表内容
$head -1 filename #显示文件第一行
显示文件倒数第五行:$tail -5 filename
查看两个文件间的差别:$diff file1 file2
动态显示文本最新信息:$tail -f crawler.log
2.6. 查找文件内容
使用egrep查询文件内容:
egrep ‘03.1\/CO\/AE‘ TSF_STAT_111130.log.012
egrep ‘A_LMCA777:C‘ TSF_STAT_111130.log.035 > co.out2


2.7. 文件与目录权限修改
改变文件的拥有者 chown
改变文件读、写、执行等属性 chmod
递归子目录修改: chown -R tuxapp source/
增加脚本可执行权限: chmod a+x myscript
2.8. 给文件增加别名
创建符号链接/硬链接:
ln cc ccAgain :硬连接;删除一个,将仍能找到;
ln -s cc ccTo :符号链接(软链接);删除源,另一个无法使用;(后面一个ccTo 为新建的文件)
2.9. 管道和重定向
批处理命令连接执行,使用 |
串联: 使用分号 ;
前面成功,则执行后面一条,否则,不执行:&&
前面失败,则后一条执行: ||
ls /proc && echo  suss! || echo failed. #能够提示命名是否执行成功or失败;
重定向:
ls  proc/*.c &> list 或者ls  proc/*.c > list 2> &l #将标准输出和标准错误重定向到同一文件
:> a.txt #清空文件:
2.10. 设置环境变量
安装的软件路径一般需要加入到path中:
PATH=$APPDIR:/opt/app/soft/bin:$PATH:/usr/local/bin:$TUXDIR/bin:$ORACLE_HOME/bin;export PATH
2.11. Bash快捷输入或删除
Ctl-U   删除光标到行首的所有字符,在某些设置下,删除全行
Ctl-W   删除当前光标到前边的最近一个空格之间的字符
Ctl-H   backspace,删除光标前边的字符
Ctl-R   匹配最相近的一个文件,然后输出


查找record.log中包含AAA,但不包含BBB的记录的总数:
cat -v record.log | grep AAA | grep -v BBB | wc -l


0x03. 文本处理

3.1. find 文件查找
查找txt和pdf文件:#find . \( -name "*.txt" -o -name "*.pdf" \) -print
正则方式查找.txt和pdf:#find . -regex  ".*\(\.txt|\.pdf\)$"
否定参数 ,查找所有非txt文本:#find . ! -name "*.txt" -print
指定搜索深度,打印出当前目录的文件(深度为1):#find . -maxdepth 1 -type f
按类型搜索 #find . -type d -print  //只列出所有目录
可以用以下命令组合来实现查找本地目录下的所有二进制文件:
ls -lrt | awk ‘{print $9}‘|xargs file|grep  ELF| awk ‘{print $1}‘|tr -d ‘:‘
按时间搜索
最近第7天被访问过的所有文件:#find . -atime 7 -type f -print
最近7天内被访问过的所有文件:find . -atime -7 -type f -print
查询7天前被访问过的所有文件:find . -atime +7 type f -print
按大小搜索:
w字 k M G 寻找大于2k的文件:find . -type f -size +2k


按权限查找:#find . -type f -perm 644 -print //找具有可执行权限的所有文件
按用户查找:#find . -type f -user weber -print// 找用户weber所拥有的文件
找到后的后续动作
删除
删除当前目录下所有的swp文件:find . -type f -name "*.swp" -delete 或者#find . type f -name "*.swp" | xargs rm
执行动作(强大的exec)
将当前目录下的所有权变更为weber:#find . -type f -user root -exec chown weber {} \;
将找到的文件全都copy到另一个目录:find . -type f -mtime +10 -name "*.txt" -exec cp {} OLD \;


3.2. grep 文本搜索
grep match_patten file // 默认访问匹配行
-o 只输出匹配的文本行。或者 -v 只输出没有匹配的文本行
-c 统计文件中包含文本的次数
grep -c “text” filename


-n 打印匹配的行号
-i 搜索时忽略大小写
-l 只打印文件名
在多级目录中对文本递归搜索(程序员搜代码的最爱): grep "class" . -R -n
匹配多个模式: grep -e "class" -e "vitural" file
grep输出以0作为结尾符的文件名(-z): grep "test" file* -lZ| xargs -0 rm
综合应用:将日志中的所有带where条件的sql查找查找出来:
#cat LOG.* | tr a-z A-Z | grep "FROM " | grep "WHERE" > b
3.3. xargs 命令行参数转换
多行输出转化为单行输出#cat file.txt| xargs
将单行转化为多行输出
cat single.txt | xargs -n 3
-n:指定每行显示的字段数
xargs参数说明
-d 定义定界符 (默认为空格 多行的定界符为 n)
-n 指定输出为多行
-I {} 指定替换字符串,这个字符串在xargs扩展时会被替换掉,用于待执行的命令需要多个参数时
-0:指定0为输入定界符
find source_dir/ -type f -name "*.cpp" -print0 |xargs -0 wc -l ##统计程序行数
3.4. sort 排序
字段说明
-n 按数字进行排序 VS -d 按字典序进行排序
-r 逆序排序
-k N 指定按第N列排序
sort -nrk 1 data.txt
sort -bd data // 忽略像空格之类的前导空白字符
3.5. uniq 消除重复行
消除重复行#sort unsort.txt | uniq
统计各行在文件中出现的次数#sort unsort.txt | uniq -c
找出重复行#sort unsort.txt | uniq -d
3.6. 用tr进行转换
通用用法
echo 12345 | tr ‘0-9‘ ‘9876543210‘ //加解密转换,替换对应字符
cat text| tr ‘\t‘ ‘ ‘  //制表符转空格
tr删除字符#cat file | tr -d ‘0-9‘ // 删除所有数字
-c 求补集
cat file | tr -c ‘0-9‘ //获取文件中所有数字
cat file | tr -d -c ‘0-9 \n‘  //删除非数字数据
tr压缩字符
tr -s 压缩文本中出现的重复字符;最常用于压缩多余的空格:
cat file | tr -s ‘ ‘
字符类
tr中可用各种字符类:
alnum:字母和数字
alpha:字母
digit:数字
space:空白字符
lower:小写
upper:大写
cntrl:控制(非可打印)字符
print:可打印字符
使用方法:tr [:class:] [:class:]
tr ‘[:lower:]‘ ‘[:upper:]‘


3.7. cut 按列切分文本
截取文件的第2列和第4列
cut -f2,4 filename
去文件除第3列的所有列
cut -f3 --complement filename
-d 指定定界符
cat -f2 -d";" filename
cut -c1-5 file //打印第一到5个字符
cut -c-2 file  //打印前2个字符
截取文本的第5到第7列$echo string | cut -c5-7
3.8. paste 按列拼接文本
将两个文本按列拼接到一起;
cat file1
1
2


cat file2
colin
book


paste file1 file2
1 colin
2 book


默认的定界符是制表符,可以用-d指明定界符:
paste file1 file2 -d ","
1,colin
2,book


2,book
3.9. wc 统计行和字符的工具
$wc -l file // 统计行数
$wc -w file // 统计单词数
$wc -c file // 统计字符数


3.10. sed 文本替换利器
首处替换#sed ‘s/text/replace_text/‘ file   //替换每一行的第一处匹配的text
全局替换#sed ‘s/text/replace_text/g‘ file
默认替换后,输出替换后的内容,如果需要直接替换原文件,使用-i:
sed -i ‘s/text/repalce_text/g‘ file
移除空白行#sed ‘/^$/d‘ file
echo this is en example | sed ‘s/\w+/[&]/g‘
$>[this]  [is] [en] [example]
子串匹配标记
第一个匹配的括号内容使用标记 1 来引用#sed ‘s/hello\([0-9]\)/\1/‘
双引号求值
sed通常用单引号来引用;也可使用双引号,使用双引号后,双引号会对表达式求值:
sed ‘s/$var/HLLOE/‘
其它示例
字符串插入字符:将文本中每行内容(ABCDEF) 转换为 ABC/DEF:
sed ‘s/^.\{3\}/&\//g‘ file


3.11. awk 数据流处理工具
awk ‘ BEGIN{ statements } statements2 END{ statements } ‘
工作方式
1.执行begin中语句块;
2.从文件或stdin中读入一行,然后执行statements2,重复这个过程,直到文件全部被读取完毕;
3.执行end语句块
print 打印当前行
使用不带参数的print时,会打印当前行
#echo -e "line1\nline2" | awk ‘BEGIN{print "start"} {print } END{ print "End" }‘
print 以逗号分割时,参数以空格定界;
echo | awk ‘ {var1 = "v1" ; var2 = "V2"; var3="v3"; print var1, var2 , var3; }‘
$>v1 V2 v3


特殊变量: NR NF $0 $1 $2
NR:表示记录数量,在执行过程中对应当前行号;
NF:表示字段数量,在执行过程总对应当前行的字段数;
$0:这个变量包含执行过程中当前行的文本内容;
$1:第一个字段的文本内容;
$2:第二个字段的文本内容;
echo -e "line1 f2 f3\n line2 \n line 3" | awk ‘{print NR":"$0"-"$1"-"$2}‘
打印每一行的第二和第三个字段#awk ‘{print $2, $3}‘ file
统计文件的行数#awk ‘ END {print NR}‘ file
累加每一行的第一个字段
echo -e "1\n 2\n 3\n 4\n" | awk ‘BEGIN{num = 0 ;
print "begin";} {sum += $1;} END {print "=="; print sum }‘


传递外部变量
var=1000
echo | awk ‘{print vara}‘ vara=$var #  输入来自stdin
awk ‘{print vara}‘ vara=$var file # 输入来自文件


用样式对awk处理的行进行过滤
awk ‘NR < 5‘ #行号小于5
awk ‘NR==1,NR==4 {print}‘ file #行号等于1和4的打印出来
awk ‘/linux/‘ #包含linux文本的行(可以用正则表达式来指定,超级强大)
awk ‘!/linux/‘ #不包含linux文本的行


读取命令输出--使用getline,将外部shell命令的输出读入到变量cmdout中:
echo | awk ‘{"grep root /etc/passwd" | getline cmdout; print cmdout }‘


在awk中使用循环
for(i=0;i<10;i++){print $i;}
for(i in array){print array[i];}
$echo ‘2015_04_02 20:20:08: mysqli connect failed, please check connect info‘|awk -F‘:‘ ‘{print $1 ":" $2 ":" $3; }‘
>2015_04_02 20:20:08   # 这种方式满足需求
而如果需要将后面的部分也打印出来(时间部分和后文分开打印):
$echo ‘2015_04_02 20:20:08: mysqli connect failed, please check connect info‘|awk -F‘:‘ ‘{print $1 ":" $2 ":" $3; print $4;}‘
>2015_04_02 20:20:08
>mysqli connect failed, please check connect info
wk结合grep找到指定的服务,然后将其kill掉
ps -fe| grep msv8 | grep -v MFORWARD | awk ‘{print $2}‘ | xargs kill -9;
awk实现head、tail命令
head#awk ‘NR<=10{print}‘ filename
tail#awk ‘{buffer[NR%10] = $0;} END{for(i=0;i<11;i++){ \
#print buffer[i %10]} } ‘ filename
打印指定列
awk方式实现 #ls -lrt | awk ‘{print $6}‘
cut方式实现#ls -lrt | cut -f6
打印指定文本区域
确定行号
seq 100| awk ‘NR==4,NR==6{print}‘
确定文本
打印处于start_pattern 和end_pattern之间的文本:
#awk ‘/start_pattern/, /end_pattern/‘ filename


确定文本--打印处于start_pattern 和end_pattern之间的文本:
seq 100 | awk ‘/13/,/15/‘
cat /etc/passwd| awk ‘/mai.*mail/,/news.*news/‘


awk常用内建函数
index(string,search_string):返回search_string在string中出现的位置
sub(regex,replacement_str,string):将正则匹配到的第一处内容替换为replacement_str;
match(regex,string):检查正则表达式是否能够匹配字符串;
length(string):返回字符串长度
echo | awk ‘{"grep root /etc/passwd" | getline cmdout; print length(cmdout) }‘
printf 类似c语言中的printf,对输出进行格式化:
seq 10 | awk ‘{printf "->%4s\n", $1}‘
3.12. 迭代文件中的行、单词和字符
1. 迭代文件中的每一行
while 循环法
while read line;
do
echo $line;
done < file.txt
改成子shell:#cat file.txt | (while read line;do echo $line;done)

awk法#cat file.txt| awk ‘{print}‘


0x04. 磁盘管理

4.1. 查看磁盘空间
查看磁盘空间利用大小 #df -h
查看当前目录所占空间大小 #du -sh
查看当前目录下所有子文件夹排序后的大小#du -sh `ls` | sort
4.2. 打包/ 压缩
压缩


$gzip demo.txt
tar -cvf etc.tar /etc #仅打包,不压缩!
-c :打包选项
-v :显示打包进度
-f :使用档案文件
生成 demo.txt.gz


4.3. 解包/解压缩
解包
tar -xvf demo.tar
-x 解包选项
解压后缀为 .tar.gz的文件 1. 先解压缩,生成**.tar:
$gunzip demo.tar.gz
解包:
$tar -xvf demo.tar
$bzip2 -d demo.tar.bz2
bz2解压:
tar jxvf demo.tar.bz2
如果tar 不支持j,则同样需要分两步来解包解压缩,使用bzip2来解压,再使用tar解包:
bzip2 -d  demo.tar.bz2
tar -xvf  demo.tar
-d decompose,解压缩
tar解压参数说明:
-z 解压gz文件
-j 解压bz2文件

-J 解压xz文件


0x05. 进程管理工具

5.1. 查询进程
查询正在运行的进程信息#ps -ef 或者查询归属于用户colin115的进程#ps -lu colin115
查询进程ID(适合只记得部分进程字段)#pgrep -l re
以完整的格式显示所有的进程#ps -ajx
ps工具标识进程的5种状态码:
D 不可中断 uninterruptible sleep (usually IO)
R 运行 runnable (on run queue)
S 中断 sleeping
T 停止 traced or stopped
Z 僵死 a defunct (”zombie”) process)
4.2. 输出列的含义
F 代表这个程序的旗标 (flag), 4 代表使用者为 super user
S 代表这个程序的状态 (STAT),关于各 STAT 的意义将在内文介绍
UID 程序被该 UID 所拥有
PID 进程的ID
PPID 则是其上级父程序的ID
CCPU 使用的资源百分比
PRI 这个是 Priority (优先执行序) 的缩写,详细后面介绍
NI 这个是 Nice 值,在下一小节我们会持续介绍
ADDR 这个是 kernel function,指出该程序在内存的那个部分。如果是个 running的程序,一般就是 “-“
SZ 使用掉的内存大小
WCHAN 目前这个程序是否正在运作当中,若为 - 表示正在运作
TTY 登入者的终端机位置
TIME 使用掉的 CPU 时间。
CMD 所下达的指令为何
显示所有进程信息 #ps -A
显示指定用户信息 #ps -u root
显示所有进程信息,连同命令行 #ps -ef
列出目前所有的正在内存中的程序 #ps aux

显示进程信息,并实时更新#top
查看端口占用的进程状态:#lsof -i:3306
查看用户username的进程所打开的文件#lsof -u username
查询init进程当前打开的文件#lsof -c init
查询指定的进程ID(23295)打开的文件#lsof -p 23295
查询指定目录下被进程开启的文件(使用+D 递归目录):#lsof +d mydir1/
5.2. 终止进程
杀死指定PID的进程 (PID为Process ID)#kill PID
杀死相关进程#kill -9 3434
杀死job工作 (job为job number)#kill %job
查看系统中使用CPU、使用内存最多的进程;
5.3. 进程监控
查看系统中使用CPU、使用内存最多的进程;$top
(->)P
P:根据CPU使用百分比大小进行排序。
M:根据驻留内存大小进行排序。
i:使top不显示任何闲置或者僵死进程
5.4. 分析线程栈
pmap,来输出进程内存的状况,用来分析线程堆栈#ps -fe| grep redis
pmap 29515


5.5. 综合运用
将用户colin115下的所有进程名以av_开头的进程终止:
ps -u colin115 |  awk ‘/av_/ {print "kill -9 " $1}‘ | sh
将用户colin115下所有进程名中包含HOST的进程终止:
ps -fe| grep colin115|grep HOST |awk ‘{print $2}‘ | xargs kill -9;


0x06. 性能监控

6.1. 监控CPU
查看CPU使用率#sar -u 10 2 每10秒采集一次,共采集两次
查看CPU平均负载#sar -q 1 2
查看内存使用量#free -mh
当系统中sar不可用时,可以使用以下工具替代:linux下有 vmstat、Unix系统有prstat
查看cpu、内存、使用情况: vmstat n m (n 为监控频率、m为监控次数
#vmstat 2 3 -S M
使用watch 工具监控变化 当需要持续的监控应用的某个数据变化
操作redis时,监控内存变化:
#watch -d -n 1 ‘./redis-cli info | grep memory‘
(以下为watch工具中的界面内容,一旦内存变化,即实时高亮显示变化)
Every 1.0s: ./redis-cli info | grep memory 


0x07. 网络工具

7.1. 查询网络服务和端口
列出所有端口 (包括监听和未监听的)#netstat -a
列出所有 tcp 端口#netstat -at
列出所有有监听的服务状态#netstat -l
使用netstat工具查询端口#netstat -antp | grep 6379
查询7902端口现在运行什么程序:
#lsof -i:7902
    COMMAND   PID   USER   FD   TYPE    DEVICE SIZE NODE NAME
    WSL     30294 tuapp    4u  IPv4 447684086       TCP 10.6.50.37:tnos-dp (LISTEN)
#ps -fe | grep 30294
7.2. 网络路由
查看路由状态:#route -n
发送ping包到地址IP:#ping IP
探测前往地址IP的路由路径:#traceroute IP
DNS查询,寻找域名#$host domain
反向DNS查询:#host IP
7.3. 镜像下载
直接下载文件或者网页:#wget url
–limit-rate :下载限速
-o:指定日志文件;输出都写入日志;
-c:断点续传
7.4. ftp sftp lftp ssh
SSH登陆:#ssh ID@host #ssh登陆远程服务器host,ID为用户名。
ftp/sftp文件传输:#sftp ID@host
登陆服务器host,ID为用户名。sftp登陆后,可以使用下面的命令进一步操作:
get filename # 下载文件
put filename # 上传文件
ls # 列出host上当前路径的所有文件
cd # 在host上更改当前路径
lls # 列出本地主机上当前路径的所有文件
lcd # 在本地主机更改当前路径


lftp同步文件夹(类似rsync工具):
lftp -u user:pass host
lftp user@host:~> mirror -n


7.5. 网络复制
将本地localpath指向的文件上传到远程主机的path路径:
$scp localpath ID@host:path
以ssh协议,遍历下载path路径下的整个文件系统,到本地的localpath:
$scp -r ID@site:path localpath


0x08. 用户管理工具

8.1. 用户
添加用户$useradd -m username
该命令为用户创建相应的帐号和用户目录/home/username;
用户添加之后,设置密码:密码以交互方式创建:$passwd username
删除用户#userdel -r username
$su userB 进入交互模型,输入密码授权进入;
一个用户可以属于多个组,将用户加入到组:$usermod -G groupNmame username
变更用户所属的根组(将用加入到新的组,并从原有的组中除去):$usermod -g groupName username


查看系统所有组
系统的所有用户及所有组信息分别记录在两个文件中:/etc/passwd , /etc/group 默认情况下这两个文件对所有用户可读:
查看所有用户及权限:$more /etc/passwd
查看所有的用户组及权限:$more /etc/group
8.3. 用户权限
使用ls -l可查看文件的属性字段,
文件属性字段总共有10个字母组成,
第一个字母表示文件类型,”-” --文件;字母”d”--目录
文件所属用户、用户所在组、其它用户的读写和执行权限;
#ls -l /etc/group
-rwxrw-r-- colin king 725 2013-11-12 15:37 /home/colin/a
更改读写权限
使用chmod命令更改文件的读写权限,更改读写权限有两种方法,一种是字母方式,一种是数字方式
字母方式:
$chown userMark(+|-)PermissionsMark file
userMark取值:  PermissionsMark取值:
    u:用户 r:读
    g:组 w:写
    o:其它用户 x:执行
    a:所有用户
数字方式:
4(读)、2(写)、1(执行)三种数值的和来确定权限。
如6(4+2)代表有读写权,7(4+2+1)有读、写和执行的权限。
$chmod 740 main     将main的用户权限设置为rwxr-----
更改文件或目录的拥有者$chown -R ym /root/Desktop/1
8.4. 环境变量
bashrc用于交互式non-loginshell,而profile用于交互式login shell。
/etc/profile,/etc/bashrc 是系统全局环境变量设定
~/.profile,~/.bashrc用户目录下的私有环境变量设定
当登入系统获得一个shell进程时,其读取环境设置脚本分为三步:
①读入的是全局环境变量设置文件/etc/profile
②根据其内容读取额外的文档,如/etc/profile.d和/etc/inputrc
读取当前登录用户Home目录下的文件~/.bash_profile,其次读取~/.bash_login,最后读取~/.profile,这
读取~/.bashrc
例如,我们可以在这些环境变量中设置自己经常进入的文件路径,以及命令的快捷方式:
.bashrc
alias m=‘more‘
alias lm=‘ls -al|more‘
log=/opt/applog/common_dir
unit=/opt/app/unittest/common
.bash_profile
. /opt/app/tuxapp/openav/config/setenv.prod.sh.linux
export PS1=‘$PWD#‘
通过上述设置,我们进入log目录就只需要输入cd $log即可;


0x09. 系统管理及IPC资源管理

9.1. 系统管理
查看Linux系统版本:$uname -a 或者 $lsb_release -a 或者$more /etc/release
查询CPU信息:$cat /proc/cpuinfo
查看CPU的核的个数:$cat /proc/cpuinfo | grep processor | wc -l
查看内存信息:$cat /proc/meminfo
显示内存page大小(以KByte为单位):$pagesize
设置系统日期和时间(格式为2014-09-15 17:05:00):#date -s 2014-09-15 17:05:00
强制把系统时间写入CMOS(这样,重启后时间也正确了):$clock -w
格式化输出当前日期时间:$date +%Y%m%d.%H%M%S
>20150512.173821
9.2. IPC资源管理
IPC资源查询IPC资源查询
查看系统使用的IPC共享内存资源 #ipcs -m
查看系统使用的IPC队列资源 #ipcs -q
查看系统使用的IPC信号量资源 #ipcs -s
应用示例:查看IPC资源被谁占用
有个IPCKEY:51036 ,需要查询其是否被占用;
首先通过计算器将其转为十六进制:
51036 -> c75c
如果知道是被共享内存占用:
$ipcs -m | grep c75c
0x0000c75c 40403197   tdea3    666        536870912  2
如果不确定,则直接查找:
$ipcs | grep c75c
0x0000c75c 40403197   tdea3    666        536870912  2
0x0000c75c 5079070    tdea3    666        4
系统IPC参数查询#ipcs -l
清除IPC资源
使用ipcrm 命令来清除IPC资源:这个命令同时会将与ipc对象相关联的数据也一起移除。当然,只有root用户,或者ipc对象的创建者才有这项权利;
ipcrm用法:
ipcrm -M shmkey  移除用shmkey创建的共享内存段
ipcrm -m shmid    移除用shmid标识的共享内存段
ipcrm -Q msgkey  移除用msqkey创建的消息队列
ipcrm -q msqid  移除用msqid标识的消息队列
ipcrm -S semkey  移除用semkey创建的信号
ipcrm -s semid  移除用semid标识的信号
清除当前用户创建的所有的IPC资源:
ipcs -q | awk ‘{ print "ipcrm -q "$2}‘ | sh > /dev/null 2>&1;
ipcs -m | awk ‘{ print "ipcrm -m "$2}‘ | sh > /dev/null 2>&1;
ipcs -s | awk ‘{ print "ipcrm -s "$2}‘ | sh > /dev/null 2>&1;


9.3 检测和设置系统资源限制
显示当前所有的系统资源limit 信息#ulimit – a
对生成的 core 文件的大小不进行限制:#ulimit – c unlimited



9.4 scp 跨机远程拷贝
secure copy,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。当你服务器硬盘变为只读 read only system时,用scp可以帮你把文件移出来。
scp [参数] [原路径] [目标路径]
命令参数:
-1 强制scp命令使用协议ssh1
-2 强制scp命令使用协议ssh2
-4 强制scp命令只使用IPv4寻址
-6 强制scp命令只使用IPv6寻址
-B 使用批处理模式(传输过程中不询问传输口令或短语)
-C 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
-p 留原文件的修改时间,访问时间和访问权限。
-q 不显示传输进度条。
-r 递归复制整个目录。
-v 详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
-c cipher 以cipher将数据传输进行加密,这个选项将直接传递给ssh。
-F ssh_config 指定一个替代的ssh配置文件,此参数直接传递给ssh。
-i identity_file 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
-l limit 限定用户所能使用的带宽,以Kbit/s为单位。
-o ssh_option 如果习惯于使用ssh_config(5)中的参数传递方式,
-P port 注意是大写的P, port是指定数据传输用到的端口号
-S program 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。
从本地服务器复制到远程服务器:
复制文件:
$scp local_file remote_username@remote_ip:remote_folder
$scp local_file remote_username@remote_ip:remote_file
$scp local_file remote_ip:remote_folder
$scp local_file remote_ip:remote_file
复制目录:
$scp -r local_folder remote_username@remote_ip:remote_folder
$scp -r local_folder remote_ip:remote_folder
从远程复制到本地的scp命令与上面的命令一样,只要将从本地复制到远程的命令后面2个参数互换顺序就行了。
从远处复制文件到本地目录
$scp root@10.6.159.147:/opt/soft/demo.tar /opt/soft/
从远处复制到本地
$scp -r root@10.6.159.147:/opt/soft/test /opt/soft/
上传本地文件到远程机器指定目录
$scp /opt/soft/demo.tar root@10.6.159.147:/opt/soft/scptest
上传本地目录到远程机器指定目录
$scp -r /opt/soft/test root@10.6.159.147:/opt/soft/scptest


9.5 wget 文件下载
wget [参数] [URL地址]
-V, –version 显示wget的版本后退出
-h, –help 打印语法帮助
-b, –background 启动后转入后台执行
-e, –execute=COMMAND 执行’.wgetrc’格式的命令,wgetrc格式参见/etc/wgetrc或~/.wgetrc
记录和输入文件参数
-o, –output-file=FILE 把记录写到FILE文件中
-a, –append-output=FILE 把记录追加到FILE文件中
-d, –debug 打印调试输出
-q, –quiet 安静模式(没有输出)
-v, –verbose 冗长模式(这是缺省设置)
-nv, –non-verbose 关掉冗长模式,但不是安静模式
-i, –input-file=FILE 下载在FILE文件中出现的URLs
-F, –force-html 把输入文件当作HTML格式文件对待
-B, –base=URL 将URL作为在-F -i参数指定的文件中出现的相对链接的前缀
–sslcertfile=FILE 可选客户端证书 –sslcertkey=KEYFILE 可选客户端证书的KEYFILE –egd-file=FILE 指定EGD socket的文件名
下载参数
-bind-address=ADDRESS 指定本地使用地址(主机名或IP,当本地有多个IP或名字时使用)
-t, –tries=NUMBER 设定最大尝试链接次数(0 表示无限制).
-O –output-document=FILE 把文档写到FILE文件中
-nc, –no-clobber 不要覆盖存在的文件或使用.#前缀
-c, –continue 接着下载没下载完的文件
-progress=TYPE 设定进程条标记
-N, –timestamping 不要重新下载文件除非比本地文件新
-S, –server-response 打印服务器的回应
-T, –timeout=SECONDS 设定响应超时的秒数
-w, –wait=SECONDS 两次尝试之间间隔SECONDS秒
-waitretry=SECONDS 在重新链接之间等待1…SECONDS秒
-random-wait 在下载之间等待0…2*WAIT秒
-Y, -proxy=on/off 打开或关闭代理
-Q, -quota=NUMBER 设置下载的容量限制
-limit-rate=RATE 限定下载输率
目录参数
-nd –no-directories 不创建目录
-x, –force-directories 强制创建目录
-nH, –no-host-directories 不创建主机目录
-P, –directory-prefix=PREFIX 将文件保存到目录 PREFIX/…
-cut-dirs=NUMBER 忽略 NUMBER层远程目录
HTTP 选项参数
-http-user=USER 设定HTTP用户名为 USER.
-http-passwd=PASS 设定http密码为 PASS
-C, –cache=on/off 允许/不允许服务器端的数据缓存 (一般情况下允许)
-E, –html-extension 将所有text/html文档以.html扩展名保存
-ignore-length 忽略 ‘Content-Length’头域
-header=STRING 在headers中插入字符串 STRING
-proxy-user=USER 设定代理的用户名为 USER
proxy-passwd=PASS 设定代理的密码为 PASS
referer=URL 在HTTP请求中包含 ‘Referer: URL’头
-s, –save-headers 保存HTTP头到文件
-U, –user-agent=AGENT 设定代理的名称为 AGENT而不是 Wget/VERSION
no-http-keep-alive 关闭 HTTP活动链接 (永远链接)
cookies=off 不使用 cookies
load-cookies=FILE 在开始会话前从文件 FILE中加载cookie

save-cookies=FILE 在会话结束后将 cookies保存到 FILE文件中


9.6 FTP 选项参数
-nr, –dont-remove-listing 不移走 ‘.listing’文件
-g, –glob=on/off 打开或关闭文件名的 globbing机制
passive-ftp 使用被动传输模式 (缺省值).
active-ftp 使用主动传输模式
retr-symlinks 在递归的时候,将链接指向文件(而不是目录)
递归下载参数
-r, –recursive 递归下载--慎用!
-l, –level=NUMBER 最大递归深度 (inf 或 0 代表无穷)
-delete-after 在现在完毕后局部删除文件
-k, –convert-links 转换非相对链接为相对链接
-K, –backup-converted 在转换文件X之前,将之备份为 X.orig
-m, –mirror 等价于 -r -N -l inf -nr
-p, –page-requisites 下载显示HTML文件的所有图片
递归下载中的包含和不包含(accept/reject):


-A, –accept=LIST 分号分隔的被接受扩展名的列表
-R, –reject=LIST 分号分隔的不被接受的扩展名的列表
-D, –domains=LIST 分号分隔的被接受域的列表
-exclude-domains=LIST 分号分隔的不被接受的域的列表
-follow-ftp 跟踪HTML文档中的FTP链接
-follow-tags=LIST 分号分隔的被跟踪的HTML标签的列表
-G, –ignore-tags=LIST 分号分隔的被忽略的HTML标签的列表
-H, –span-hosts 当递归时转到外部主机
-L, –relative 仅仅跟踪相对链接
-I, –include-directories=LIST 允许目录的列表
-X, –exclude-directories=LIST 不被包含目录的列表
-np, –no-parent 不要追溯到父目录
wget -S –spider url 不下载只显示过程


9.7 使用实例
实例1:使用wget下载单个文件
$wget http://www.minjieren.com/wordpress-3.1-zh_CN.zip
实例2:使用wget -O下载并以不同的文件名保存
$wget -O wordpress.zip http://www.minjieren.com/download.aspx?id=1080
实例3:使用wget –limit -rate限速下载
$wget --limit-rate=300k http://www.minjieren.com/wordpress-3.1-zh_CN.zip
实例4:使用wget -c断点续传
$wget -c http://www.minjieren.com/wordpress-3.1-zh_CN.zip
实例5:使用wget -b后台下载
$wget -b http://www.minjieren.com/wordpress-3.1-zh_CN.zip
你可以使用以下命令来察看下载进度:$tail -f wget-log
实例6:伪装代理名称下载
wget --user-agent="Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrom
使用wget -i下载多个文件
首先,保存一份下载链接文件,接着使用这个文件和参数-i下载:
$cat > filelist.txt
url1
url2
url3
url4
$wget -i filelist.txt
使用wget –mirror镜像网站
$wget --mirror -p --convert-links -P ./LOCAL URL
下载整个网站到本地
-miror:开户镜像下载
-p:下载所有为了html页面显示正常的文件
-convert-links:下载后,转换成本地的链接
-P ./LOCAL:保存所有文件和目录到本地指定目录
实例9: 使用wget -r -A下载指定格式文件
$wget -r -A.pdf url
可以在以下情况使用该功能:
下载一个网站的所有图片
下载一个网站的所有视频
下载一个网站的所有PDF文件
实例10:使用wget FTP下载
$wget ftp-url
$wget --ftp-user=USERNAME --ftp-password=PASSWORD url
可以使用wget来完成ftp链接的下载
使用wget匿名ftp下载:wget ftp-url

使用wget用户名和密码认证的ftp下载:wget –ftp-user=USERNAME –ftp-password=PASSWORD url


0x10  编译安装

tar zxvf wget-1.9.1.tar.gz
cd wget-1.9.1
./configure
make
make install


ls /
mkdir /usb
mount /dev/sdb /usb
或者 mount -t vfat /dec/sdb /usb
insmod /usb/raidcardabc.ko


who is he
whoami
w
ls /lib/modules/3.18.0-kali3-686-pae/
ls /lib/modules/3.18.0-kali3-686-pae/kernel/


startx -- :1
#启动另外一个x-window,即是操作系统的另外一个界面
skill -9 pts/2


装载MBR,在secure system 模式下
chroot /mmt/sysimage
grub-install /dev/sda


重新转载另外一个系统的MBR
grub>root <hd0,4)
grub>kernel /vmlinuz-2.6 root=LABEL /
grub>initrd /initrd-2.6.img
grub>boot


find / -name sqlmap
Ctrl + c  终止命令
Ctrl + z  暂停命令,放入后台
jobs
Ctrl + R 搜索命令
Ctrl + S 缓存命令
Ctrl + q 推出命令


touch aa
stat aa
mount /dev/sdb1 /mmt
mount -t vfat /dev/sdb1 /mmt
umount /mmt
mount /dev/cdrom /mmt
mount -t iso9660 /dev/cdrom /mmt
mount //192.168.1.1/tools /mmt


write root pts/1
hahah hah a a
haha


root@ym:~# ls -l mm
total 0
root@ym:~# du -h -a mm
4.0K mm
root@ym:~# ls -ld mm
drwxr-xr-x 2 root root 4096 Oct  6 07:29 mm


文件查找
find --查找速度慢,find / -name xx -ls
find /etc -name "*network*" -exec file{} \;
hich --可执行文件,只在特定目录搜索可执行文件
whereis --可执行文件及其可执行文件的man 配置文件
slocate -- locate查找自己的数据库,可以先,#updatedb
locate -r ‘.*newfile.*‘
grep --


gzip -d 
bzip2 -d 
tar cvf
tar rvf
tar xvf
tar tvf 
tar cvfz +文件 # 压缩
tar xvfz +文件 # 解压


grep `\mm\‘ /etc/passwd


tail -f /var/log/messages


grep -v ‘^#‘ /etc/squid.conf | grep ‘^$‘ |wc -l


ps auxf
ps -ef
ps aux|grep bash
ps aux|grep httpd


killall httpd
killall -9 httpd
skill -9 httpd
skill -9 pts/2
pkill -u httpd


kill %1
bg %1
fg %1


./b.sh


PATH =$PATH:/tmp/dd
b.sh


vim ~/.bash_profile


echo $PSi
$PSI="\u@ \h \w \t"
export AAA #全局变量


history -c


vim .bash_logout
vim .bash_history
!213
Ctrl +r


touch aa
echo !$
env
set aa=11111111111111
unsign 
alias =ooo="echo aaaaaaaaaaaaaaaaaaa"
unalias ooo


{}枚举{1,2,3}-{a,b,c} 1-a,1-b,,,,,
& 丢进后台
~ 主目录
% 后台的第几个任务

() --函数 
“”除去空格
‘’除去所有字符含义
` `先执行``里面的命令,log`date +%m%d`
; 分号


改变系统语言,/etc/systemconfig/i18n


bash  -vx ./b

bash -v ./b


欢迎大家分享更好的思路,热切期待^^_^^ !


Linux基础命令

标签:

原文地址:http://blog.csdn.net/qq_29277155/article/details/51964352

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!