linux常用命令总结
Posted songjn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux常用命令总结相关的知识,希望对你有一定的参考价值。
1.查看进程:ps -ef 或者 ps -aux
2.查看网络状态:ifconfig
3.过滤:grep 过滤内容 文件路径 (过滤改文件下的有过滤内容的内容)
grep -r 过滤内容 路径 (过滤该路径下的内容)
4. 动态显示当前耗费资源最多进程信息:top
5. 命令不会用了,找男人 :man 如:man ls
6.测试网络连通:ping + IP或者域名
本地:ping 127.0.0.1 或者 ping localhost
7.显示网络状态信息:netstat
8.杀死进程:kill ,可以先用ps 或 top命令查看进程的id,然后再用kill命令杀死进程
9.清屏:clear
10.查看文件内容:cat 文件 [ | more] 分页显示
Cat +文件名 查询显示所有
Cat +文件名 |more:分页显示(空格,向下翻页;回车,向下一行;q,退出)
11.切换目录:cd 如:cd /etc
12.拷贝文件:cp 源文件名 新文件名 如文件备份:cp ifcfg-eth0 ifcfg-eth0.bak
13.Vi+文件名:编辑文件
开始编辑:a
退出编辑esc
保存:shift+zz
使用技巧:
Vi +文件名:打开文件
gg:光标定位首行
yy:复制光标所在行
dd:剪切光标所在行
p:粘贴
u:撤销
ctrl+r:反撤销
:?查找内用:查找
:%s/查找内容/替换内容/[g]:替换操作【g】全局替换
i : 转换到插入模式
x : 删除当前字符
. : 重复最后一次的修改操作(同PS里ctrl+f执行滤镜)
u : 撤销操作
CTRL-R : 重做
p : 将删除的字符插入到当前位置(put)
退出保存:
:q : 退出
:q! : 不保存退出
ZZ : 保存后退出
:e! : 放弃修改重新编辑
14.Ctrl+c:结束进程;
15.上下按键:查看之前输入的命令
16.Pwd:显示当前目录
17.History:查看历史命令
18.常用目录:
/etc:系统的配置信息。如配置网卡信息:cd /etc/sysconfig/network-scripts
/usr:最庞大的目录,要用到的应用程序和文件几乎都在这个目录
19.操作网络服务
启动:etc/init.d/network start
停止:etc/init.d/network stop
重启:etc/init.d/network restart
或者:
service network shart/stop/restart
网卡的开启和关闭:
ifconfig eth0 down/up
20.关机:halt
重启:reboot
21.显示文件或目录:ls
-l 列出文件详细信息l(list) ==》ll
-a 列出当前目录下所有文件及目录,包括隐藏的a(all)
ll结果说明:
类型及权限 | 引用数 | 用户 | 组 | 大小 | 月 | 日 | 年/时间 | 名称
文件类型说明:
-:普通文件
d:目录文件
b:块文件
c:字符设备
l:链接
s:套接字
22.对文件整体的操作:
touch:创建普通文件
格式:touch file1 [file2]
cp:拷贝文件
格式:Cp 文件名 [新文件名]
Cp 文件名 路径 /[新文件名] 拷贝到其他路径下[新文件名]
如:Cp –r aa/ccc . :将aa下的ccc文件夹拷贝到aa目录
rm:删除文件
格式:Rm [路径]文件名
Rm –rf aa:删除路径包含里面的文件,不提示;
mkdir:创建目录
格式:mkdir dir1 [dir2]
rmdir:删除目录(空)
格式:rmdir dir
非空路径: Rm –rf aa:删除路径包含里面的文件,不提示;
Mv: 移动目标文件
格式:mv 目标文件 路径[/new文件名]
23.目录跳转:cd
cd /etc/sysconfig 绝对路径跳转
cd aaa 相对路径跳转
cd ../ 跳转上级目录
24.文件的搜索定位:
grep :
grep ftp /etc/passwd 在文件/etc/passwd下查找包含‘ftp’字符的行。
grep ‘test‘ d* 查询所有以d开头的文件中包含‘test’的行
ls /bin | grep ‘^m‘ 通过管道过滤ls /bin输出内容,只显示以m开头的行
grep -i ‘helloword‘ menu.h main.c
显示在文件 menu.h 和 main.c 中匹配 helloword 的行,胡洛大小写
find:
格式:find [目录] [条件] [动作]
-name 指定文件名
-type 指定文件类型{l/b/c/d/p/f}
-size 指定文件大小,单位k/M/G,+表示大于,-表示小于
-user 指定用户
-group 指定组
25.打印环境变量
echo $PATH
环境变量的设置:
方式一:一次性设置。
export PATH=$PATH:dir1[dir2]
方式二:永久性设置,所有用户都生效,需要重启生效或使用source命令。
将方式一的操作添加到文件/etc/profile的末尾
方式三:永久性设置,只针对一个用户,需要重启生效或使用source命令。优先级高于二。
将方式一的操作添加到文件~/.bashrc末尾。
26.文件的压缩:tar。
-c:压缩
-x:解压
-z:使用gzip
-f:使用bzip2
-v:显示压缩过程的详细信息
-c:指定解压后存放的路径
如:
Tar –zcvf 压缩文件名.tar.gz 需要压缩的目标文件 压缩
Tar –zxvf 压缩文件名.tar.gz [–C压缩到的路径] 解压
27.权限管理chmod(修改文件的权限)。
权限说明:
1:文件类型(l/b/c/d/p/-/s)
2/3/4:文件所有者的 读(r)/写(r)/执行(x) 权限, -表示不具有该权限。
5/6/7:文件所有者所属的组的读/写/执行权限
8/9/10:其他用户的组的读/写/执行权限
11:.表示启用了selinux。空白表示没有开启selinux。
如:
chmod +x file 给文件添加可执行权限
chmod -w file 给文件去掉可写权限
chmod u+x file 给文件的所有者添加可执行权限
chmod g-w file 给文件的同组去掉可写操作
chmod u=rwx,g=rx,o=rw file
28.用户及用户组。
/etc/passwd 该文件存放了系统中所有的用户。如下:
用户名:密码:描述:用户ID/UID:组ID/UID:用户家目录:shell
添加用户:useradd 用户名
-d:指定家用户目录
-u:指定用户id(必须大于500,小于500倍系统占用)
-s:指定用户执行的shell。
chsh 用户名 -s /sbin/nologin 用户已经创建,禁止登陆。
删除用户:userdel 用户名
修改密码:passwd [用户名] 若不指定修改当前用户的密码
查看所有用户的密码 /etc/shadow
切换用户:su [用户]
若只想执行一个超级用户的命令,不想切换用户。在原来的命令前面添加sudo。
修改文件所属的组:chgrp 组名 文件名
设置文件的所有者:chown 用户 [:组名] 文件名
29.服务以及进程:vmstat
[email protected]:~# vmstat 2 1
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 0 3498472 315836 3819540 0 0 0 1 2 0 0 0 100 0
r 表示运行队列
b 表示阻塞的进程
swpd 虚拟内存已使用的大小
free 空闲的物理内存的大小
buff Linux/Unix系统是用来存储,目录里面有什么内容,权限等的缓存
cache cache直接用来记忆我们打开的文件,给文件做缓冲
si 每秒从磁盘读入虚拟内存的大小
so 每秒虚拟内存写入磁盘的大小
bi 块设备每秒接收的块数量
bo 块设备每秒发送的块数量
in 每秒CPU的中断次数,包括时间中断
cs 每秒上下文切换次数
us 用户CPU时间
sy 系统CPU时间
id 空闲 CPU时间
wt 等待IO CPU时间
30.top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。
注意问题:
1.除了这些目录的内容之外,另外要注意的是,因为根目录与开机有关,开机过程中仅有根目录会被挂载, 其他分区则是在开机完成之后才会持续的进行挂载的行为。就是因为如此,因此根目录下与开机过程有关的目录, 就不能够与根目录放到不同的分区去。
那哪些目录不可与根目录分开呢?有底下这些:
/etc:配置文件
/bin:重要执行档
/dev:所需要的装置文件
/lib:执行档所需的函式库与核心所需的模块
/sbin:重要的系统执行文件
这五个目录千万不可与根目录分开在不同的分区。请背下来啊。
以下为linux防火墙命令
1.查看防火墙信息
命令:iptables -L
cat /etc/sysconfig/iptable
2.关闭防火墙
命令:/etc/init.d/iptables stop
service iptables stop
启动防火墙:/etc/init.d/iptables start
重启防火墙:/etc/init.d/iptables restart
3.关闭防火墙的自启。
查看系统自启的进程服务:chkconfig 。
[[email protected] ~]# chkconfig iptables off (设置自动启动为关闭)
# chkconfig --del iptables (移除开机自动启动)
4.清除防火墙规则
命令:iptables -F ? iptables -X
5.保存防火墙设置。
命令:/etc/rc.d/init.d/iptables save
6. 为了能采用远程SSH登陆,我们要开启22端口
# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
注:这个规则,如果你把OUTPUT 设置成DROP的就要写上这一部,好多人都是望了写这一部规则导致,始终无法SSH.在远程一下,是不是好了.
7. 如果开启了web服务器,OUTPUT设置成DROP的话,同样也要添加一条链:
# iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
8. 允许icmp包通过,也就是允许 ping
# iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT设置成DROP的话)
# iptables -A INPUT -p icmp -j ACCEPT (INPUT设置成DROP的话)
9. 允许loopback!(不然会导致DNS无法正常关闭等问题)
# iptables -A INPUT -i lo -p all -j ACCEPT (如果是INPUT DROP)
# iptables -A OUTPUT -o lo -p all -j ACCEPT(如果是OUTPUT DROP)
10. 减少不安全的端口连接
# iptables -A OUTPUT -p tcp --sport 31337 -j DROP
# iptables -A OUTPUT -p tcp --dport 31337 -j DROP
11. 只允许192.168.0.3的机器进行SSH连接
# iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j ACCEPT
12.开启转发功能,(在做NAT时,FORWARD默认规则是DROP时,必须做)
# iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
# iptables -A FORWARD -i eth1 -o eh0 -j ACCEPT
13.丢弃坏的TCP包
#iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP
14.处理IP碎片数量,防止攻击,允许每秒100个
#iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
15.设置ICMP包过滤,允许每秒1个包,限制触发条件是10个包
#iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
16.命令讲解:
五个规则链:
1.PREROUTING (路由前)
2.INPUT (数据包流入口)
3.FORWARD (转发管卡)
4.OUTPUT(数据包出口)
5.POSTROUTING(路由后)
-A:追加,在当前链的最后新增一个规则
INPUT (数据包流入口)
OUTPUT(数据包出口)
-s:指定作为源地址匹配,这里不能指定主机名称,必须是IP
IP | IP/MASK | 0.0.0.0/0.0.0.0
而且地址可以取反,加一个“!”表示除了哪个IP之外
-p:用于匹配协议的(这里的协议通常有3种,TCP/UDP/ICMP)
-i eth0:从这块网卡流入的数据
流入一般用在INPUT和PREROUTING上
-o eth0:从这块网卡流出的数据
流出一般在OUTPUT和POSTROUTING上
-m multiport:表示启用多端口扩展
-j ACTION:
DROP:悄悄丢弃
ACCEPT:接受
以下是linux远程ssh相关命令
1、查看SSH客户端版本
有的时候需要确认一下SSH客户端及其相应的版本号。使用ssh -V命令可以得到版本号。需要注意的是,Linux一般自带的是OpenSSH: 下面的例子即表明该系统正在使用OpenSSH:
$ ssh -V
OpenSSH_3.9p1, OpenSSL 0.9.7a Feb 19 2003
下面的例子表明该系统正在使用SSH2:
$ ssh -V
ssh: SSH Secure Shell 3.2.9.1 (non-commercial version) on i686-pc-linux-gnu
2、连接到远程主机:
命令格式 :
ssh [-l
login_name] [-p port] [[email protected]]hostname
ssh [email protected] 或者
ssh
remoteserver -l name
不指定用户,默认使用root账户登录
ssh 192.168.0.11
指定用户:
ssh -l root 192.168.0.11
说明:以上两种方式都可以远程登录到远程主机,server代表远程主机,name为登录远程主机的用户名。
3、连接到远程主机指定的端口:
命令格式:
ssh [email protected] -p 2222 或者
ssh remoteserver -l name -p 2222
修改过ssh登录端口的可以:
ssh -p 12333 192.168.0.11
ssh -l root -p 12333 192.168.0.11
ssh -p 12333 [email protected]
说明:p 参数指定端口号,通常在路由里做端口映射时,我们不会把22端口直接映射出去,而是转换成其他端口号,这时就需要使用-p端口号命令格式。
4、通过远程主机1跳到远程主机2:
命令格式:
ssh -t remoteserver1 ssh remoteserver2
说明:当远程主机remoteserver2无法直接到达时,可以使用-t参数,然后由remoteserver1跳转到remoteserver2。在此过程中要先输入remoteserver1的密码,然后再输入remoteserver2的密码,然后就可以操作remoteserver2了。
5、通过SSH运行远程shell命令:
命令格式:
ssh -l name remoteserver ‘command’
说明:连接到远程主机,并执行远程主机的command命令。例如:查看远程主机的内存使用情况。
$ ssh -l root 192.168.1.100 svmon -G
6、修改SSH监听端口:
默认情况下,SSH监听连接端口22,攻击者使用端口扫描软件就可以看到主机是否运行有SSH服务,将SSH端口修改为大于1024的端口是一个明智的选择,因为大多数端口扫描软件(包括nmap)默认情况都不扫描高位端口。打开/etc/ssh/sshd_config文件并查找下面这样的行:
Port 22
去掉该行前面的# 号,然后修改端口号并重新启动SSH服务:
$ /etc/init.d/ssh restart
7、仅允许SSH协议版本2:
有两个SSH协议版本,仅使用SSH协议版本2会更安全,SSH协议版本1有安全问题,包括中间人攻击(man-in-the-middle)和注入(insertion)攻击。编辑/etc/ssh/sshd_config文件并查找下面这样的行:
# Protocol 2,1
修改为
Protocol 2
8、禁止root用户登录:
通常情况下,不采用直接用root用户登录到远程主机,由于root用户拥有超级权限,这样会带来安全隐患,所以,一般我们用普通用户登录,当需要管理远程主机时,再切换到root用户下。打开/etc/ssh/sshd_config文件并查找下面这样的行:
#PermitRootLogin yes
将#号去掉,然后将yes修改成no,重启ssh服务,这样就可以禁止root用户登录。
将#号去掉,然后将bannertest.txt文件的全路径替换/some/path,然后保存,重启ssh服务。当客户端登录时,就会看到bannertest.txt文件中的提示信息。
9、进行端口映射:
假如公司内网有台web服务器,但是只对内不对外,这样,外网就无法访问,可以用ssh进行端口映射来实现外网访问内网的web服务器。假如web服务器名为webserver,webserver可以用ssh访问到远端主机remoteserver,登录到webserver,然后用下面命令进行映射
命令格式:
ssh -R 3000:localhost:80 remoteserver
执行完成后,在remoteserver机器上,执行netstat -an | grep
3000,查看有没有开通3000端口。并执行以下命令观察是否可以打开webserver上的网页
$ w3m http://127.0.0.1:3000
如果能打开界面,说明映射成功.但是,这只限于本机访问web服务器,即只能remoteserver机器访问webserver。因为3000端口绑定的是remoteserver机器的127.0.0.1端口。可以编辑remoteserver机器上的/etc/ssh/sshd_config文件并添加如下内容:
添加 GatewayPorts yes 内容,把监听端口3000绑定到 0.0.0.0 地址上,这样外部的所有机器都能访问到这个监听端口,然后保存退出。并重启ssh服务。完成后其它机器就可以在浏览器中输入
http://remoteserver:3000来访问webserver了。
10、设置登录时提示信息
首先编辑一个文件,如bannertest.txt,文件内容自行定义。然后打开/etc/ssh/sshd_config文件并查找下面这样的行:
#Banner /some/path
11、修改ssh端口
修改ssh登录端口和禁止root登录。改端口可以防止被端口扫描。
编辑配置文件:
vim /etc/ssh/sshd_config
找到#Port 22,去掉注释,修改成一个五位的端口:
Port 12333
找到#PermitRootLogin yes,去掉注释,修改为:
PermitRootLogin no
重启sshd服务:
service sshd restart
成功重启: Stopping sshd: [ OK ]
Starting sshd: [ OK ]
12、注销是logoff 断开是tsdiscon
13、简单的传输命令:scp
scp [email protected]:/etc/php.ini /home/user2
将主机ww.liniux.cn 上的/etc/php.ini文件copy到本地/home/user2目录下
Linux开启ssh
1.查看有没有开启:
⑴查看端口有没有开, netstat -an|grep 22
⑵查看ssh服务有没有运行:ps -e | grep ssh
⑶ssh服务的网络连接情况: netstat -ntlp
2.相关命令
⑴重新启动SSH服务,命令为:/etc/init.d/sshd restart
⑵验证SSH服务状态,命令为:/etc/init.d/sshd status
⑶看到系统中ssh安装包:rpm -qa | grep ssh
⑷
⑸关闭防火墙 service iptables stop
1. 开放端口命令: /sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
2.保存:/etc/rc.d/init.d/iptables save
3.重启服务:/etc/init.d/iptables restart
4.查看端口是否开放:/sbin/iptables -L -n
以上是关于linux常用命令总结的主要内容,如果未能解决你的问题,请参考以下文章