热门搜索 :
考研考公
您的当前位置:首页正文

linux基础

来源:伴沃教育
Linux基础篇

常用指令:

ls 显示文件或目录

-l 列出文件详细信息l(list)

-a 列出当前目录下所有文件及目录,包括隐藏的a(all) mkdir 创建目录

-p 创建目录,若无父目录,则创建p(parent) cd 切换目录 touch 创建空文件

echo 创建带有内容的文件。 cat 查看文件内容 cp 拷贝

mv 移动或重命名 rm 删除文件

-r 递归删除,可删除子目录及文件 -f 强制删除

find 在文件系统中搜索某文件

wc 统计文本中行数、字数、字符数 grep 在文本文件中查找某个字符串 rmdir 删除空目录

tree 树形结构显示目录,需要安装tree包 pwd 显示当前目录 ln 创建链接文件

more、less 分页显示文本文件内容 head、tail 显示文件头、尾内容

系统管理命令

stat 显示指定文件的详细信息,比ls更详细 who 显示在线登陆用户 whoami 显示当前操作用户 hostname 显示主机名 uname 显示系统信息

top 动态显示当前耗费资源最多进程信息 ps 显示进程状态 ps -aux

du 查看目录大小 du -h /home带有单位显示目录信息 df 查看磁盘大小 df -h 带有单位显示磁盘信息 free 显示内存信息 ifconfig 查看网络情况

ping 测试网络连通 netstat 显示网络状态信息 clear 清屏

kill 杀死进程,可以先用ps 或 top命令查看进程的id,然后再用kill命令杀死进程。

打包压缩相关命令

压缩管理:包(.tar)、压缩文件(.gz)、压缩包(.tar.gz 或 .tgz) #tar命令打包的格式:

tar 参数 目标文件路径/包名 被打包的文件名称

tar -cvf t101.tar f101 #将目录f101和文件打到当前目录下的t101.tar包中 tar -cvf /opt/t101.tar ./d101 #将当前目录d01打到/opt/t101.tar包中 tar -tvf t101.tar #查看t101.tar包中的内容

tar -xvf t101.tar #将t101.tar包中的内容释放到当前目录中

tar -xvf t101.tar -C /opt/d102/ #将t101.tar包中的内容释放到/opt/d102/目录中 压缩:

zip只能压缩单个文件,不能压缩目录、也不能同时压缩多个文件 压缩比:1表示压缩比最小;9表示压缩比最大 2G --> 1G(压缩比小,压缩速度快) 2G --> 500M(压缩比大,压缩速度慢)

gzip -1 f101 #将f101压缩,形成压缩文件f101.gz gzip -9 f101 #将f101压缩,形成压缩文件f101.gz 查看压缩包:

gzip -l f101.gz #查看压缩文件f101.gz的压缩信息,小写字母l 解压:

gzip -d f101.gz 或 gunzip f101.gz #解压f101.gz文件 对包进行压缩:

tar -cvf t101.tar f101 #首先打包操作

gzip -9 t101.tar #然后将包压缩,最终形成压缩包t101.tar.gz tar命令只有打包功能,没有压缩功能,它是借助gzip进行压缩 打包并压缩:

tar 参数 目标文件路径和包名 被打包的文件名称

tar -czvf t101.tar.gz T101 #将目录和文件打到当前目录下的t101.tar.gz压缩包中 tar -czvf /opt/t101.tar.gz T101 #将目录和文件打到/opt/t101.tgz压缩包中 tar -tzvf ./t101.tar.gz #查看t101.tar.gz压缩包中的内容

tar -xzvf t101.tar.gz #将t101.tar.gz压缩包中的内容释放到当前目录中 tar -xzvf t101.tar.gz -C /opt/d102/ #将t101.tar.gz压缩包中的内容解压到/opt/d102/目录中

关机/重启机器

shutdown

-r 关机重启 -h 关机不重启 now 立刻关机 halt 关机 reboot 重启

网络配置:

ifconfig -a #查ip信息

ping #测试网络是否连通

setup #配置ip、防火墙、服务等信息

service network restart(start\\stop) #重启服务 telnet #测试端口连通性 centos7

systemctl restart(start\\stop) network 虚拟网卡桥接连接方式 hostname #输出主机名

客户端工具(远程连接Linux服务器):crt、xshell、ssh、puty,通过SSH2(端口是22)协议远程连接到Linux服务器(SSH2协议是在安装Linux操作系统时自带的协议),前2个最常用,支持中文,后2个不支持中文 从一台服务器远程访问另一台服务器

ssh 被访问的机器的用户名@被访问的机器的IP ssh root@172.11.1.67 退出:logout

scp #远程复制文件(夹)

scp -r root@172.11.1.112:/root/install.log /root/

网卡配置:

网卡配置文件为/etc/sysconfig/network-scripts/ifcfg-eth0,设置完毕后直接用service network restart生效

[root@linpclroot]#cat /etc/sysconfig/networking/devices/ifcfg-rth0 DEVICE=eth0 -网卡名称 ONBOOT=yes 是否开机启动 BOOTPROTO=static 静态地址 IPADDR=192.168.0.2 主机ip

NETMASK=255.255.255.0 子网掩码 GATEWAY=192.168.0.1 默认网关 案例:

如果主机可以ping通但是无法通过ssh连接,数据只能进入服务器但是无法返回

这种情况一般是默认路由掉了,回包的时候不知道从条路进行回包,导致服务器丢掉数据;

Vi命令扩展(命令模式下的操作):

三种模式:(1)命令模式 (2)编辑模式 (3)末行模式 三种的切换:

命令模式切换到编辑模式:输入i/a。 编辑模式退到命令模式:esc

2、末行模式是以冒号开头。注意:末行模式必须是在命令模式下操作。命令: (1):set nu 显示行号 (2):set nonu 不显示行号 (3):w 保存 (4):q 退出

(5):wq 保存加退出 (6):n n行数 跳转到指定行 (7):q! 强制退出 (8):w 文件名 另存为

用命令:set ff? 可以看到dos或unix的字样.

用:set ff=unix把它强制为unix格式,也可以用sed 这样的工具来做:

(9):n1,n2s/需要替换的字符串/替换字符串/参数 n1表示从第n1行开始,表示一个具体的数字,比如:1 n2表示从第n2行结束,表示一个具体的数字,比如:20 参数:g表示所有找出字符都替换没有确认。 c表示每一次都确认

i表示忽略大小写,但是i需要跟c或是g一起使用。

:s/is/IS/ #替换当前行第一个is为IS :s/is/IS/g #替换当前行所有is为IS

(n为数字,若n为点好(即.),表示从当前行开始到最后一行)

:n,$s/is/IS #替换第n行开始到最后一行中每一行的第一个is为IS :1,5s/is/IS #替换第1行开始到第5行中每一行的第一个is为IS

:n,$s/is/IS/g #替换第n行开始到最后一行中每一行的所有is为IS :1,$s/is/IS/g #替换第1行开始到最后一行中每一行的所有is为IS

3、命令模式下的命令: (1)G 到末行 * (2)gg 到首行

(3)$ 到行尾 * (4)^ 到行首 (5)ngg 跳转到n行

(6)dd 删除一行,光标所在行

(7)ndd 删除n行,从光标所在行向下删除n行 (8)u 撤销

(9)o 新增一行并进入到编辑模式,向下增加。如果是大写的o,就是向上增加。 (10)i 进入编辑模式,在光标前编辑 * (11)a 进入编辑模式,在光标后编辑 * (12)x 删除一个字符。 *

(13)D 删除当前光标所在位置到行尾的内容 *

(14)/搜索字符 字符串搜索,查找下一个,按n, 向下查找。如果向上查找,按N。 *

(15)yy 复制 *

(16)nyy 复制n行,从光标所在的位置往下复制 * (17)p 粘帖

用户及用户组管理

/etc/passwd 存储用户账号 /etc/group 存储组账号

/etc/shadow 存储用户账号的密码 /etc/gshadow 存储用户组账号的密码 useradd 用户名 userdel 用户名 adduser 用户名 groupadd 组名 groupdel 组名

passwd root 给root设置密码 su root su - root

/etc/profile 系统环境变量 bash_profile 用户环境变量 .bashrc 用户环境变量

su user 切换用户,加载配置文件.bashrc

su - user 切换用户,加载配置文件/etc/profile ,加载bash_profile 更改文件的用户及用户组

sudo chown [-R] owner[:group] {File|Directory}

例如:还以jdk-7u21-linux-i586.tar.gz为例。属于用户hadoop,组hadoop 要想切换此文件所属的用户及组。可以使用命令。 sudo chown root:root jdk-7u21-linux-i586.tar.gz 文件权限管理 三种基本权限

R 读 数值表示为4 W 写 数值表示为2 X 可执行 数值表示为1

如图所示,jdk-7u21-linux-i586.tar.gz文件的权限为-rw-rw-r-- -rw-rw-r--一共十个字符,分成四段。

第一个字符“-”表示普通文件;这个位置还可能会出现“l”链接;“d”表示目录 第二三四个字符“rw-”表示当前所属用户的权限。 所以用数值表示为4+2=6 第五六七个字符“rw-”表示当前所属组的权限。 所以用数值表示为4+2=6 第八九十个字符“r--”表示其他用户权限。 所以用数值表示为2 所以操作此文件的权限用数值表示为662 更改权限

sudo chmod [u所属用户 g所属组 o其他用户 a所有用户] [+增加权限 -减少权限] [r w x] 目录名

例如:有一个文件filename,权限为“-rw-r----x” ,将权限值改为\"-rwxrw-r-x\",用数值表示为765

sudo chmod u+x g+w o+r filename 上面的例子可以用数值表示

Iptables防火墙

iptables -F iptables -X

iptables -F -t mangle iptables -t mangle -X iptables -F -t nat iptables -t nat -X

首先,把三个表清空,把自建的规则清空。

iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD ACCEPT

设定INPUT、OUTPUT的默认策略为DROP,FORWARD为ACCEPT。

iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT 先把“回环”打开,以免有不必要的麻烦。

iptables -A INPUT -i eth+ -p icmp --icmp-type 8 -j ACCEPT

iptables -A OUTPUT -o eth+ -p icmp --icmp-type 0 -j ACCEPT 在所有网卡上打开ping功能,便于维护和检测。

iptables -A INPUT -i eth0 -s 192.168.100.250 -d 192.168.100.1 -p tcp --dport 22 -j ACCEPT

iptables -A OUTPUT -o eth0 -d 192.168.100.250 -s 192.168.100.1 -p tcp --sport 22 -j ACCEPT

打开22端口,允许远程管理。(设定了很多的附加条件:管理机器IP必须是250,并且必须从eth0网卡进入)

iptables -A INPUT -i eth0 -s 192.168.100.0/24 -p tcp --dport 3128 -m state --state NEW,ESTABLISHED -j ACCEPT

允许192.168.100.0/24网段的机器发送数据包从eth0网卡进入。如果数据包是tcp协议,而且目的端口是3128(因为REDIRECT已经把80改为3128了。nat表的PREROUTING是在filter表的INPUT前面的。)的,再而且,数据包的状态必须是NEW或者

ESTABLISHED的(NEW代表tcp三段式握手的“第一握”,换句话说就是,允许客户端机器向服务器发出链接申请。ESTABLISHED表示通过握手已经建立起链接),通过。

iptables -A OUTPUT -o eth2 -p tcp --sport 32768:61000 -m state --state NEW,ESTABLISHED -j ACCEPT

我们先来看这一句。现在你的数据包已经进入到linux服务器防火墙上来了。squid需要代替你去访问,所以这时,服务器就成了客户端的角色,所以它要使用32768到61000的私有端口进行访问。(大家会奇怪应该是1024到65535吧。其实CentOS版的linux所定义的私有端口是32768到61000的,你可以通过cat /proc/sys/net/ipv4/ip_local_port_range,查看一下。)再次声明:这里是squid以客户端的身份去访问其他的服务器,所以这里的源端口是32768:61000,而不是3128!

iptables -A INPUT -i eth2 -p tcp --dport 32768:61000 -m state --state ESTABLISHED -j ACCEPT 当然了,数据有去就有回。

iptables -A OUTPUT -o eth0 -d 192.168.100.0/24 -p tcp --sport 3128 -m state --state ESTABLISHED -j ACCEPT

数据包还得通过服务器,转到内网网卡上。请注意,这里,是squid帮你去访问了你想要访问的网站。所以在内网中,你的机器是客户端角色,而squid是服务器角色。这与刚才对外访问的过程是不同的。所以在这里,源端口是3128,而不是32768:61000。

iptables -A OUTPUT -o eth2 -p udp --dport 53 -j ACCEPT iptables -A INPUT -i eth2 -p udp --sport 53 -j ACCEPT 开放DNS端口

因篇幅问题不能全部显示,请点此查看更多更全内容

Top