linux基础命令1
1、su命令与su -命令
su只是切换了root身份,但Shell环境仍然是普通用户的Shell;而su -连用户和Shell环境一起切换成root身份了。只有切换了Shell环境才不会出现PATH环境变量错误,报command not found的错误。
su切换成root用户以后,pwd一下,发现工作目录仍然是普通用户的工作目录;而用su -命令切换以后,工作目录变成root的工作目录了
2、uname命令
uname 查看内核名称
uname -s 同上(s:kernel-name)
uname -r 查看内核发行版本(r:kernel-release)
uname -v 查看内核建立时间与cpu架构(v:kernel-version)
uname -n 查看主机名(n:nodename)
uname -m 查看硬件名称 i686=32 X86_64=64(m:machine)
uname -i 查看硬件平台名称(硬件i686是属于硬件平台i386系列的)(i:hardware-platform)
uname -o 查看操作系统(o:operating-system)
uname -p 查看处理器类型(p:processer)
uname -a 查看所有信息
3、tar命令
-c: 创建新的tar文件(c:create)
-x: 解开tar文件(x:extract)
-t: 列出tar文件中包含的文件的信息(t:list)
-r: 附加新的文件到tar文件中(r:append)
-u: 用已打包的文件的较新版本更新tar文件(u:update)
这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。
-d: 查看文件与归档文件的不同(d:diff/compare)
-z: 调用gzip执行压缩或解压缩(.gz)
-j: 调用bzip2执行压缩或解压缩(.bz2)
-Z: 调用compress执行压缩或解压缩(.Z)
-v: 列出每一步处理涉及的文件的信息,只用一个“v”时,仅列出文件名,使用两个“v”时,列出权限、所有者、大小、时间、文件名等信息。(v:verbose)
-O: 将文件解开到标准输出(O:to-stdout)
-k: 不覆盖文件系统上已有的文件(k: keep-old-files)
下面的参数-f是必须的
-f: [主机名:]文件名 指定要处理的文件名。可以用“-”代表标准输出或标准输入(f:file)
tar -cf all.tar *.jpg
这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。
tar -rf all.tar *.gif
这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。
tar -uf all.tar logo.gif
这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。
tar -tf all.tar
这条命令是列出all.tar包中所有文件,-t是列出文件的意思
tar -xf all.tar
这条命令是解出all.tar包中所有文件,-t是解开的意思
压缩
tar –cvf jpg.tar *.jpg //将目录里所有jpg文件打包成jpg.tar
tar –czf jpg.tar.gz *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz
tar –cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2
tar –cZf jpg.tar.Z *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z
rar a jpg.rar *.jpg //rar格式的压缩,需要先下载rar for linux
zip jpg.zip *.jpg //zip格式的压缩,需要先下载zip for linux
解压
tar -xvf file.tar //解压 tar包
tar -xzvf file.tar.gz //解压tar.gz
tar -xjvf file.tar.bz2 //解压 tar.bz2
tar –xZvf file.tar.Z //解压tar.Z
unrar e file.rar //解压rar
unzip file.zip //解压zip
1、*.tar 用 tar –xvf 解压
2、*.gz 用 gzip -d或者gunzip 解压
3、*.tar.gz和*.tgz 用 tar –xzf 解压
4、*.bz2 用 bzip2 -d或者用bunzip2 解压
5、*.tar.bz2 用tar –xjf 解压
6、*.Z 用 uncompress 解压
7、*.tar.Z 用tar –xZf 解压
8、*.rar 用 unrar e解压
9、*.zip 用 unzip 解压
4、yum命令
yum的命令形式一般是如下:yum [options] [command] [package ...]
其中的[options]是可选的。[command]为所要进行的操作,[package ...]是操作的对象。
option选项:
-h 帮助(h:help)
-q 静默执行,不显示安装的过程(q:quiet)
-t 忽略错误(t:tolerant)
-R [分钟] 设置等待时间(r:randomwait)
-y 当安装过程提示选择全部为"yes"(y:assumeyes)
--skip -broken 忽略依赖问题
--nogpgcheck 忽略GPG验证
1、安装
yum install 全部安装
yum install package1 安装指定的安装包package1
yum groupinsall group1 安装程序组group1
2、更新和升级
yum update 全部更新
yum update package1 更新指定程序包package1
yum check-update 检查可更新的程序
yum upgrade package1 升级指定程序包package1
yum groupupdate group1 升级程序组group1
3、查找和显示
yum info package1 显示安装包信息package1
yum list 显示所有已经安装和可以安装的程序包
yum list package1 显示指定程序包安装情况package1
yum groupinfo group1 显示程序组group1信息yum search string 根据关键字string查找安装包
4、删除程序
yum remove | erase package1 删除程序包package1
yum groupremove group1 删除程序组group1
yum deplist package1 查看程序package1依赖情况
5、清除缓存
yum clean packages 清除缓存目录下的软件包
yum clean headers 清除缓存目录下的 headers
yum clean oldheaders 清除缓存目录下旧的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) 清除缓存目录下的软件包及旧的headers
安装软件: yum install *.rpm
删除软件: yum remove *.rpm或者yum erase *.rpm
升级软件: yum upgrade *或者yum update *
查询信息: yum info *
搜索软件: yum search *
显示软件包依赖关系:yum deplist *
5、sudo命令
sudo [-bhHpV][-s ][-u <用户>][指令]
参数
-b 在后台执行指令。(b:backgroud)
-h 显示帮助。(h:help)
-H 将HOME环境变量设为新身份的HOME环境变量。(H:HOME)
-k 结束密码的有效期限,也就是下次再执行sudo时便需要输入密码。(k:kill)
-l 列出目前用户可执行与无法执行的指令。(l:list)
-p 改变询问密码的提示符号。(p:prompt)
-s 执行指定的shell。(s:shell)
-u 以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份。(u:user)
-v 延长密码有效期限5分钟。(v:validate)
-V 显示版本信息。(V:version)
-S 从标准输入流替代终端来获取密码(S:stdin)
6、查看使用某端口的进程
lsof -i:8090
netstat -ap|grep 8090
7、nohup
用途:不挂断地运行命令。
语法:nohup Command [ Arg … ] [ & ]
无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。
如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。
如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。
退出状态:该命令返回下列出口值:
126 可以查找但不能调用 Command 参数指定的命令。
127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。
否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态。
8、linux特殊符号
1、#与$
#管理员 $普通用户
2、~
~+ 当前的工作目录,这个符号代表当前的工作目录,她和内建指令 pwd的作用是相同的。
~- 上次的工作目录,这个符号代表上次的工作目录。
3、''单引号
被单引号用括住的内容,将被视为单一字串。在引号内的代表变数的$符号,没有作用,也就是说,他被视为一般符号处理,防止任何变量替换。
4、""双引号
被双引号用括住的内容,将被视为单一字串。它防止通配符扩展,但允许变量扩展。这点与单引数的处理方式不同
5、''倒引号
在前面的单双引号,括住的是字串,但如果该字串是一列命令列,会怎样?答案是不会执行。要处理这种情况,我们得用倒单引号来做
6、\ 倒斜线
在交互模式下的escape 字元,有几个作用;放在指令前,有取消 aliases的作用;放在特殊符号前,则该特殊符号的作用消失;放在指令的最末端,表示指令连接下一行。
7、| 管道 (pipeline)
是 UNIX 系统,基础且重要的观念。连结上个指令的标准输出,做为下个指令的标准输入。
8、& 后台工作
单一个& 符号,且放在完整指令列的最后端,即表示将该指令列放入后台中工作。
9、-
在 GNU 指令中,如果单独使用 - 符号,不加任何该加的文件名称时,代表"标准输入"的意思。这是 GNU指令的共通选项。譬如下例
tar xpvf -
这里的 - 符号,既代表从标准输入读取资料。
不过,在 cd 指令中则比较特别
cd -
这代表变更工作目录到"上一次"工作目录。
10、%
${parameter%word}${parameter%%word}
一个 % 表示最短的 word 匹配,两个表示最长的 word 匹配。
11、^
这个符号在规则表达式中,代表行的 "开头" 位置,在[]中也与"!"(叹号)一样表示“非”
12、<
使cmd命令从file读入
13、<<
从命令行读取输入,直到一个与text相同的行结束。除非使用引号把输入括起来,此模式将对输入内容进行shell变量替换。如果使用<<- ,则会忽略接下来输入行首的tab,结束行也可以是一堆tab再加上一个与text相同的内容
14、<<<
把word(而不是文件word)和後面的换行作为输入提供给cmd。
15、<>
以读写模式把文件file重定向到输入,文件file不会被破坏。仅当应用程序利用了这一特性时,它才是有意义的。
16、>|
功能同>,但即便在设置了noclobber时也会复盖file文件,注意用的是|而非一些书中说的!,目前仅在csh中仍沿用>!实现这一功能。
17、:> filename
把文件"filename"截断为0长度.# 如果文件不存在, 那么就创建一个0长度的文件(与'touch'的效果相同).
18、>&n
把输出送到文件描述符n
19、m>&n
把输出重定向到文件符m的信息重定向到文件描述符n
20、cmd >&-
关闭标准输出
21、cmd <&n
输入来自文件描述符n
22、cmd m<&n
m来自文件描述各个n
23、cmd <&-
关闭标准输入
24、cmd <&n-
移动输入文件描述符n而非复制它。(需要解释)
25、cmd >&n-
移动输出文件描述符 n而非复制它。(需要解释)
注意:>&实际上复制了文件描述符,这使得cmd > file 2>&1与cmd 2>&1 >file的效果不一样。
9、ps
-w 显示加宽可以显示较多的资讯
-aux 显示所有包含其他使用者的行程
1)ps a 显示现行终端机下的所有程序,包括其他用户的程序。
2)ps -A 显示所有进程。
3)ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
4)ps -e 此参数的效果和指定"A"参数相同。
5)ps e 列出程序时,显示每个程序所使用的环境变量。
6)ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
7)ps -H 显示树状结构,表示程序间的相互关系。
8)ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
9)ps s 采用程序信号的格式显示程序状况。
10)ps S 列出程序时,包括已中断的子程序资料。
11)ps -t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。
12)ps u 以用户为主的格式来显示程序状况。
13)ps x 显示所有程序,不以终端机来区分。
14)ps -aux 最常用的方法,然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作。
15)查看运行的后台进程
(1)jobs -l
(2)ps -ef
注:
用ps -def | grep查找进程很方便,最后一行总是会grep自己,用grep -v参数可以将grep命令排除掉
16)查看到进程id之后,使用netstat命令查看其占用的端口
netstat -nap|grep 7779
17)显示某个用户的进程
ps -f -u nova,neutron
18)通过进程名或者进程id显示进程
ps -C neutron-server
# -C 只能搜索名为neutron-server的进程(完全匹配),不能使用部分搜索或者通配符,例如 ps -C neutron 就不会显示neutron-server进程。因此部分匹配用 ps -ef | grep neutron
19)利用 cpu 或者内存使用量对进程排序
ps aux --sort=-pcpu,+pmem
# 首先以 cpu 使用量排序呢, 如果 cpu 使用量相同,则以内存使用量排序。
20)用ps命令实时显示进程信息
watch -n 1 'ps -e -o pid,uname,cmd,pmem,pcpu --sort=-pmem,-pcpu | head -15'
10、防火墙
1、临时生效,重启失效
开启防火墙 service iptables start
关闭防火墙 service iptables stop
查看状态 service iptables status
2、永久生效
开启防火墙 chkconfig iptables on
关闭防火墙 chkconfig iptables off
查看状态 chkconfig iptables --list
3、ipv6
开启防火墙 chkconfig ip6tables on
关闭防火墙 chkconfig ip6tables off
查看状态 chkconfig ip6tables --list
11、find
1、按照文件名查找
find 目录 -name httpd.conf #在目录下文件httpd.conf
2.按照文件特征查找
1、find / -amin -10
查找在系统中最后10分钟访问的文件(access time)
2、find / -atime -2
# 查找在系统中最后48小时访问的文件
3、find / -empty
# 查找在系统中为空的文件或者文件夹
4、find / -group cat
# 查找在系统中属于 group为cat的文件
5、find / -mmin -5
# 查找在系统中最后5分钟里修改过的文件(modify time)
6、find / -mtime -1
#查找在系统中最后24小时里修改过的文件
7、find / -user fred
#查找在系统中属于fred这个用户的文件
8、find / -size +10000c
#查找出大于10000字节的文件(c:字节,w:双字,k:KB,M:MB,G:GB)
9、find / -size -1000k
#查找出小于1000KB的文件
3.使用混合查找方式查找文件
参数有: !,-and(-a),-or(-o)。
1、find /tmp -size +10000c -and -mtime +2
#在/tmp目录下查找大于10000字节并在最后2分钟内修改的文件
2、find / -user fred -or -user george
#在/目录下查找用户是fred或者george的文件文件
3、find /tmp ! -user panda
#在/tmp目录中查找所有不属于panda用户的文件
12、man手册说明
1是普通命令
2是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)
3是库函数,如printf,fread
4是特殊文件,也就是/dev下的各种设备文件
5是指文件的格式,比如passwd,就会说明这个文件中各个字段的含义
6是给游戏留的,又各游戏自己定义
7是附件还有一些变量,比如向environ这种全局变量在这里就有说明
8是系统管理用的命令,这些命令只能由root使用
12、scp
linux远程拷贝在A服务器上操作
12-1、将B服务器上/home/lk/目录下所有的文件全部复制到本地的/root目录下
scp -r root@43.224.34.73:/home/lk /root
12-2、将A服务器上/root/lk/目录下所有的文件全部复制到B的/home/lk/cpfile目录下
scp -r /root/lk root@43.224.34.73:/home/lk/cpfile
13、ln
它的功能是为某一个文件或目录在另外一个位置建立一个同步的链接,类似Windows下的超级链接。
用法:
ln -s 源文件目标文件
删除链接 rm -rf symbolic_name 注意不是
rm -rf symbolic_name/
14、添加指定端口到防火墙
iptables -I INPUT -p udp --dport 161 -j ACCEPT
iptables -I INPUT -p tcp --dport 8080 -j ACCEPT