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

linux 常用命令总结

2017-07-16 00:00 381 查看
===================================================

vi|vim

====================================================

vi|vim

viXXX.XXX(直接vi文件名称)

viXX/xx/XX.xx(vi+文件夹/文件名称)

按键盘‘i’进入编辑模式;

按‘x’是删除光标后面的字符

’数字‘+‘x’是删除后边几个字符

‘X’删除光标前面的字符

6X

'dd'删除所在行

yy:复制光标所在行

u:假如您误操作一个指令,可以马上按u,回复到上一个操作

6x删除后边六个字符

按键盘esc键,然后按‘:’,然后‘q’;是退出(esc+‘:’+‘q’+'!')是强制退出(不保存修改)

esc+‘:’+‘w’+'q'是保存退出

esc键+‘w’+'q'+'!'是强制保存并且退出

setnu:输入“setnu”后,会在文章的每一行前面列出行号。

寻找字符串
/关键字:先按/,再输入您想寻找的字,如果第一次找的关键字不是您相尽可能的,可以一直按n会往下寻找到您要的关键字为止。

):光标移至句尾

(:光标移至句首

=============================================

find

================================================

pathname:find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。

find.-name.svn|xargsrm-rf

-namefilename#查找名为filename的文件

find-nameapril*在当前目录下查找以april开始的文件

find-nameapril*fprintfile在当前目录下查找以april开始的文件,并把结果输出到file中

find-nameap*-o-namemay*查找以ap或may开头的文件
find/mnt-nametom.txt-ftypevfat在/mnt下查找名称为tom.txt且文件系统类型为vfat的文件

48小时内修改过的文件

[root@peidachang~]#find-atime-2
.

根据关键字查找

find.-name"*.log"

按照目录或文件的权限来查找文件

find/opt/soft/test/-perm777

按类型查找

命令:

find.-typef-name"*.log"

find.-typef-name"*.log"

按大小查找文件

命令:

find.-size+1000c-print

查找当前目录大于1K的文件

用-lh选项来以易读方式列出文件

用-lh组合选项,以易读方式来显示大小。



#ls-lh

total176K

-rw-r--r--.1rootroot683Aug1909:590001.pcap

-rw-------.1rootroot1.6KJul3102:17anaconda-ks.cfg

drwxr-xr-x.2rootroot4.0KJul3102:48Desktop

drwxr-xr-x.2rootroot4.0KJul3102:48Documents

drwxr-xr-x.4rootroot4.0KAug1602:55Downloads

=======================================================================================

cp

=========================================================================================

cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理

====================================================

shell

=======================================================
sh命令是shell命令语言解释器,执行命令从标准输入读取或从一个文件中读取。通过用户输入命令,和内核进行沟通!BourneAgainShell(即bash)是自由软件基金会(GNU)开发的一个Shell,它是Linux系统中一个默认的Shell。Bash不但与BourneShell兼容,还继承了CShell、KornShell等优点
================

新建vi|vim

=================
shell:新建一个shell脚本vitest.sh,

#!/bin/bash
echo"HelloWorld!"

将上面的代码保存为test.sh,并cd到相应目录:

chmod+x./test.sh#使脚本具有执行权限
./test.sh#执行脚本


#!是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell。

注意,一定要写成./test.sh,而不是test.sh,运行其它二进制的程序也一样,直接写test.sh,linux系统会去PATH里寻找有没有叫test.sh的,而只有/bin,/sbin,/usr/bin,/usr/sbin等在PATH里,你的当前目录通常不在PATH里,所以写成test.sh是会找不到命令的,要用./test.sh告诉系统说,就在当前目录找。

作为解释器参数

这种运行方式是,直接运行解释器,其参数就是shell脚本的文件名,如:

/bin/shtest.sh
/bin/phptest.php

Shell变量

定义变量时,变量名不加美元符号($,PHP语言中变量需要),如:

your_name="runoob.com"

使用一个定义过的变量,只要在变量名前面加美元符号即可,如:

your_name="qinjx"
echo$your_name
echo${your_name}

forskillinAdaCoffeActionJava;do
echo"Iamgoodat${skill}Script"
done

使用unset命令可以删除变量。语法:

unsetvariable_name

拼接字符串

your_name="qinjx"
greeting="hello,"$your_name"!"
greeting_1="hello,${your_name}!"
echo$greeting$greeting_1

Shell数组

array_name=(value0value1value2value3)

array_name=( value0 value1 value2 value3 )

array_name[0]=value0 array_name[1]=value1 array_name =valuen

Shell注释

以"#"开头的行就是注释,会被解释器忽略。

sh里没有多行注释,只能每一行加一个#号。只能像这样:

a=10
b=20
if[$a==$b]
then
echo"a等于b"
elif[$a-gt$b]
then
echo"a大于b"
elif[$a-lt$b]
then
echo"a小于b"
else
echo"没有符合的条件"
fi

forloopin12345
do
echo"Thevalueis:$loop"
done
==============================================

crontab

=================================================

定时任务crontab

分钟小时日期月份周指令

*(星号)代表任何时刻

,(逗号)代表分隔时候。如3点与6点就是3,6

-(减号)代表一段时间范围内。如:3点到6点就是3-6

/n(斜线)n代表数字,即每隔n单位。如每隔五分钟,/5

每晚的21:30运行/apps/bin目录下的cleanup.sh。

3021***/apps/bin/cleanup.sh

shell实现只保留近几天的文件

data_dir="文件的具体目录"

Cd${data_dir}

find${data_dir}-mtime+15-execrm-rf{}\;-----清除目录下15天前的文件

注意:一般情况下不用这个命令,一旦cd空,那么将会删除根目录下的所有15天前的文件,后果很严重!!!!

shell删除最新的四个文件

#!/bin/bash
cdsource
tmp=`ls-rt|tail-n4`
foriin$tmp
do
mv$i/dist
done
rm-rfsource

head-n4把最旧的给删除

每天自动备份MySQL数据库的shell脚本

#!/bin/bash
#数据库认证
user=""
password=""
host=""
db_name=""
#其它
backup_path="/path/to/your/home/_backup/mysql"
date=$(date+"%d-%b-%Y")
#设置导出文件的缺省权限
umask177
#Dump数据库到SQL文件
mysqldump--user=$user--password=$password--host=$host$db_name>$backup_path/$db_name-$date.sql
定时删除一些老旧的备份的文件,下面的这行命令就是做这个任务的,你可以把它加在上面的脚本后面。

#删除30天之前的就备份文件
find$backup_path/*-mtime+30-execrm{}\;

=======================================

查找

============================================

Linux中关于查找的简单命令

.查找某个文件:(find命令)

find路径-name"查找的内容"

例子:find/home-name"java"orfind/home-iname"java"

find/home-name"*.txt"orfind/home-iname"*.txt"

查找弄进程的命令:

ps-ef|grep"sh_gjj_"

.在某个文件中搜索某个内容:

例子:grep"王峥嵘"XXXX.txt

linux中tail命令---用于查看文件内容
最基本的是cat、more和less。
1.如果你只想看文件的前5行,可以使用head命令,如:
head-5/etc/passwd

2.如果你想查看文件的后10行,可以使用tail命令,如:
tail-10/etc/passwd

tail-n10/etc/passwd
tail-f/var/log/messages

Linux作为Unix的衍生操作系统,Linux内建有查看当前进程的工具ps。

通过ps-ef|grepphp得到如上线程将某线程终止时用
kill-9XXXXXXXXXX为上述查出的序号如:19979线程终止为:kill-919979

===============================

ifconfig

=================================

ifconfig

[sunjimeng@localhost~]$ifconfig        //未联网时的参数
eno16777736:flags=4163<UP,BROADCAST,RUNNING,MULTICAST>mtu1500
ether00:0c:29:4d:a3:cctxqueuelen1000(Ethernet)
RXpackets1914bytes174936(170.8KiB)
RXerrors0dropped36overruns0frame0
TXpackets0bytes0(0.0B)
TXerrors0dropped0overruns0carrier0collisions0

lo:flags=73<UP,LOOPBACK,RUNNING>mtu65536
inet127.0.0.1netmask255.0.0.0
inet6::1prefixlen128scopeid0x10<host>
looptxqueuelen0(LocalLoopback)
RXpackets3246bytes281472(274.8KiB)
RXerrors0dropped0overruns0frame0
TXpackets3246bytes281472(274.8KiB)
TXerrors0dropped0overruns0carrier0collisions0

[sunjimeng@localhost~]$ifconfig//连接到有线网时的参数
eno16777736:flags=4163<UP,BROADCAST,RUNNING,MULTICAST>mtu1500//mtu表示最大传输单元
inet192.168.117.128netmask255.255.255.0broadcast192.168.117.255
inet6fe80::20c:29ff:fe4d:a3ccprefixlen64scopeid0x20<link>
ether00:0c:29:4d:a3:cctxqueuelen1000(Ethernet)
RXpackets1969bytes181974(177.7KiB)
RXerrors0dropped36overruns0frame0
TXpackets48bytes6324(6.1KiB)
TXerrors0dropped0overruns0carrier0collisions0

lo:flags=73<UP,LOOPBACK,RUNNING>mtu65536
inet127.0.0.1netmask255.0.0.0
inet6::1prefixlen128scopeid0x10<host>
looptxqueuelen0(LocalLoopback)
RXpackets3590bytes310452(303.1KiB)
RXerrors0dropped0overruns0frame0
TXpackets3590bytes310452(303.1KiB)
TXerrors0dropped0overruns0carrier0collisions0

=================================================

df

=================================================

磁盘占用情况|

1.linux系统下查询磁盘的使用情况:df-h

-a全部文件系统列表

-h方便阅读方式显示

-H等于“-h”,但是计算式,1K=1000,而不是1K=1024

-i显示inode信息

-k区块为1024字节

-l只显示本地文件系统

-m区块为1048576字节

--no-sync忽略sync命令

-P输出格式为POSIX

--sync在取得磁盘信息前,先执行sync命令

-T文件系统类型

[root@CT1190log]#df

文件系统1K-块已用可用已用%挂载点

/dev/sda719840892890896179258565%/

/dev/sda92037271561127975008041391259%/opt

/dev/sda84956284570080413037213%/var

/dev/sda61984089219775681683918411%/usr

/dev/sda3988116238809132323%/boot

tmpfs164732120164732120%/dev/shm

cpu情况

2.查看CPU的使用情况:top-bn3|grepCpu

1查看目录与文件:ls

#显示当前目录下所有文件的详细信息
ls-la


2切换目录:cd

#切换当前目录为/opt/test
cd/opt/test


3显示当前目录:pwd

pwd


4创建空文件:touch

#在当前目录下创建文件desc.txt
touchdesc.txt


5创建目录:mkdir

#在当前目录下创建test目录
mkdirtest
#在/opt/test目录下创建目录img,若无test目录,先创建test目录
mkdir-p/opt/test/img


6查看文件内容:cat

#查看desc.txt的内容
catdesc.txt


7分页查看文件内容:more

#分页查看desc.txt的内容
moredesc.txt


8查看文件尾内容:tail

#查看desc.txt的最后100行内容
tail-100desc.txt


9拷贝:cp

#拷贝desc.txt到/mnt目录下
cpdesc.txt/mnt/
#拷贝test目录到/mnt目录下
cp-rtest/mnt/


10剪切或改名:mv

#剪切文件desc.txt到目录/mnt下
mvdesc.txt/mnt/


11删除:rm

#删除test目录,-r递归删除,-f强制删除。危险操作,务必小心,切记!
rm-rftest


12搜索文件:find

#在opt目录下查找以.txt结尾的文件
find/opt-name'*.txt'


13创建链接文件:ln

#创建目录/opt/test的符号链接
ln-s/opt/test./link2test


14显示或配置网络设备:ifconfig

#显示网络设备情况
ifconfig


15显示网络相关信息:netstat

#列出所有端口
netstat-a


16显示进程状态:ps

#显示当前所有进程
ps-ef
#显示当前所有java相关进程
ps-ef|grepjava


17查看目录使用情况:du

#查看/opt/test目录的磁盘使用情况
du-h/opt/test


18查看磁盘空间使用情况:df

#查看磁盘空间使用情况
df-h


19显示系统当前进程信息:top

#显示系统当前进程信息
top


20杀死进程:kill

#杀死进程号为27810的进程,强制终止,系统资源无法回收
kill-s927810


21压缩和解压:tar

#打包test目录为test.tar.gz文件,-z表示用gzip压缩
tar-zcvftest.tar.gz./test
#解压test.tar.gz文件
tar-zxvftest.tar.gz


22改变文件或目录的拥有者和组:chown

#变更文件desc.txt的拥有者为nginx,用户组为nginx
chownnginx:nginxdesc.txt
#变更test及目录下所有文件的拥有者为nginx,用户组为nginx
chown-Rnginx:nginxtest


23改变文件或目录的访问权限:chmod

#权限范围:u(拥有者)g(郡组)o(其它用户),权限代号:r(读权限/4)w(写权限/2)x(执行权限/1)
#给文件拥有者增加test.sh的执行权限
chmodu+xtest.sh
#给文件拥有者增加test目录及其下所有文件的执行权限
chmodu+x-Rtest


24文本编辑:vim

#vim三种模式:命令模式,插入模式,编辑模式。使用ESC或i或:来切换模式。
#命令模式下,:q退出:q!强制退出:wq保存退出:setnumber显示行号/java在文档中查找javayy复制p粘贴
#编辑desc.txt文件
vimdesc.txt


25关机或重启:shutdown

#立刻关机
shutdown-hnow
#60秒后重启
shutdown-r-t60


26帮助命令:man

#查看ls命令的帮助文档
manls
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: