Linux常用命令(二)
查看自己的IP地址
在Linux中,有多种方法可以查看自己的IP地址。以下是一些常用的方法:
1.使用ifconfig命令(注意:在某些新版的Linux发行版中,ifconfig可能已经被ip命令取代,或者需要安装net-tools包才能使用):
ifconfig或ifconfig -a
这个命令会显示所有网络接口的信息,包括IP地址。找到你正在使用的网络接口(比如eth0、wlan0等),然后查看其inet行,那里会列出IP地址。
2.使用ip命令:
ip addr show或者简写为:ip a
这个命令同样会显示所有网络接口的信息,包括IP地址。找到你正在使用的网络接口,然后查看其inet行以获取IP地址。
3.使用hostname命令结合ip命令:
如果你想直接获取当前主机的主网络接口IP地址,可以使用以下命令:
ip addr show $(hostname -I | cut -d' ' -f1) | grep 'inet ' | awk '{print $2}' | cut -d'/' -f1
这个命令首先使用hostname -I获取所有IP地址,然后选择第一个IP地址对应的网络接口,并显示其IPv4地址。
4.查看/etc/network/interfaces文件(此方法适用于使用传统网络配置的Debian及其衍生版):
cat /etc/network/interfaces
查看文件内容,通常可以在文件中找到静态配置的IP地址。但是,如果使用的是动态分配(如DHCP),那么这里可能不会有IP地址信息。
5.通过网络连接图形界面查看:
如果你使用的是带有图形用户界面的Linux发行版,通常可以在网络设置或连接详情中查看IP地址。这通常涉及到打开系统设置,找到网络部分,然后查看活动连接的详细信息。
6.使用curl或wget命令通过外部服务查询:
你可以使用外部服务(如ifconfig.me或ipecho.net)来查询你的公共IP地址。例如:
curl ifconfig.me
或者:
wget -qO- ifconfig.me
这些命令将返回你的公共IP地址,而不是本地网络接口的地址。
查看路由表
在Linux中,你可以使用多种命令来查看路由表。以下是一些常用的方法:
1.使用route命令:
虽然route命令在一些较新的Linux发行版中可能已经被ip命令取代,但它仍然在一些系统上可用。使用route命令可以查看内核路由表。
route -n
-n选项使得输出以数字形式显示,而不是尝试解析主机名。
2.使用ip命令:
ip命令是较新的工具,用于显示或操作路由、设备、策略路由和隧道。使用ip命令查看路由表,你可以这样做:
ip route show
或者简写为:
ip route
如果你只想查看默认路由,可以使用:
ip route show default
或者查看特定目标网络的路由:
ip route show to <destination_network>
3.使用netstat命令:
netstat命令也可以用来显示路由表,尽管它通常更多地用于显示网络连接、路由表、接口统计等网络相关信息。
netstat -rn
-r选项表示显示路由表,-n选项使得输出以数字形式显示。
远程登录
1.SSH:SSH(Secure Shell)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。使用SSH进行远程登录非常简单,只需在本地命令行终端上输入ssh [用户名]@[主机名/IP地址]即可。例如,要远程登录到名为redhat的Linux服务器,管理员可以输入ssh admin@redhat,系统将提示输入密码进行身份验证。一旦验证通过,便可以在远程主机上执行命令。
2.Telnet:虽然SSH是更安全的远程登录协议,但在某些情况下可能仍需要使用Telnet。在Linux上配置Telnet远程登录,需要先安装telnet和telnet-server包,然后修改linux配置文件并重启守护进程。需要注意的是,Telnet的通信过程并不安全,因为它在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。因此,许多Linux服务器都不开放Telnet服务,而改用更安全的SSH方式了。
telnet hostname
3.Rlogin:Rlogin是一种早期的远程登录协议,与Telnet类似,允许管理员通过网络连接到远程主机。
4.VNC:VNC(Virtual Network Computing)是一种图形化的远程登录协议,它允许管理员在远程计算机上查看和操作图形化用户界面(GUI)。
每种方式都有其特点和适用场景,选择哪种方式取决于具体的需求和环境。在实际应用中,考虑到安全性,推荐使用SSH进行远程登录。同时,为了进一步提高安全性,还可以考虑使用密钥对进行身份验证,而不是仅仅依赖密码。
文件传输
命令:ftp (file transfer program)
格式:ftp hostname
功能:网络文件传输及远程操作。
选项:ftp命令:
cd [dirname] 进入远程机的目录
lcd [dirname] 设置本地机的目录
dir/ls 显示远程的目录文件
bin 以二进制方式进行传输
asc 以文本文件方式进行传输
get/mget 从远程机取一个或多个文件
put/mput 向远程机送一个或多个文件
prompt 打开或关闭多个文件传送时的交互提示
close 关闭与远程机的连接
quit 退出ftp
!/exit ftp登陆状态下,!表示暂时退出ftp状态回到本地目录,exit表示返回ftp状态
eg: ftp hostname
查看自己的电子邮件
命令:mailx
格式:mailx
选项:
delete 删除
next 下一个
quit 退出
reply 回复
查询历史命令
在Linux系统中,你可以使用多种方法来查询历史命令。以下是几种常用的方法:
1.使用history命令:
history命令会显示当前用户在bash shell中执行过的命令历史。你可以直接输入history来查看所有的历史命令。默认情况下,这些命令是按照执行的顺序列出的,最新的命令在最后。
history
你还可以使用history命令的一些选项来定制输出。例如,history -n会显示自上次读取历史文件以来的新命令,而history -c则会清空命令历史。
2.使用上下箭头键:
在bash shell中,你可以使用上下箭头键来浏览之前执行过的命令。这是一个快速访问和重复执行历史命令的方法,而无需重新输入整个命令。
3.使用!和!!来执行历史命令:
你可以使用!后跟历史命令的编号来重复执行那个命令。例如,!123会执行编号为123的历史命令。!!则是一个快捷方式,用于重复执行上一条命令。
!123 # 执行编号为123的历史命令
!! # 执行上一条命令
4.搜索历史命令:
使用Ctrl + r组合键可以在bash shell中搜索历史命令。按下Ctrl + r后,开始输入你要搜索的命令或命令的一部分,bash会尝试匹配你的输入并显示匹配的历史命令。当你找到你想要的命令时,按Enter键即可执行它,或者按Esc键取消搜索。
5.查看特定用户的命令历史:
每个用户的命令历史默认保存在其家目录下的.bash_history文件中。你可以查看或编辑这个文件来查看特定用户的命令历史。但是,请注意,直接编辑这个文件可能会影响命令历史的正常使用。
cat ~/.bash_history
6.配置命令历史的保存行为:
你可以通过修改bash shell的配置文件(如~/.bashrc或~/.bash_profile)来调整命令历史的保存行为。例如,你可以设置HISTSIZE变量来控制保存在内存中的历史命令的数量,以及设置HISTFILESIZE变量来控制保存在.bash_history文件中的历史命令的最大数量。
网上对话
命令:talk
格式:talk username
功能:在网上与另一用户进行对话。
注释:对话时系统把终端分为上下两部分,上半部显示自己键入信息,下半部
显示对方用户键入的信息。键入delete或Ctrl+C则结束对话。
允许或拒绝接受信息
命令:mesg (message)
格式:mesg [n/y]
功能:允许或拒绝其它用户向自己所用的终端发送信息。
选项:n 拒绝其它用户向自己所用的终端写信息
y 允许其它用户向自己所用的终端写信息(缺省值)
mesg命令:这是一个用于控制终端消息接收的命令。通过mesg命令,你可以允许或阻止其他用户向你发送消息。例如:
例如:mesg n
仅仅输入mesg(不带参数)会显示当前终端的写入状态。
给其他用户写信息
1.write命令允许你向其他登录用户发送消息。你需要知道接收消息用户的用户名以及他们登录的终端。例如:
write username pts/X
这里的username是接收消息的用户名,pts/X是用户的终端号,你可以在who命令的输出中找到它。
注释:若对方没有拒绝,两用户可进行交谈,键入EOF或Ctrl+C则结束对话。
2.wall命令则允许你向所有登录用户广播消息。例如:
wall "Hello, everyone! This is a broadcast message."
所有登录用户都会在他们的终端上看到这条消息。
3.发送电子邮件:
如果你需要发送更长的信息或者需要保存交流记录,可以考虑使用电子邮件。Linux系统通常带有邮件客户端或命令行工具,如mail或mutt。你需要配置邮件客户端以连接到SMTP服务器来发送邮件。
echo "Hello, this is a message." | mail -s "Subject" user@example.com
上面的命令会发送一封主题为"Subject",内容为"Hello, this is a message."的电子邮件给user@example.com。
创建、修改、删除用户和群组
a. 创建群组:
例如: groupadd oinstall 创建群组名为oinstall的组
groupadd -g 344 dba (dba自定义的无实际意义)
创建组号是344的组,此时在/etc/passwd文件中产生一个组ID(GID)是344的项目。
b. 修改群组:
groupmod:该命令用于改变用户组帐号的属性
groupmod –g 新的GID用户组帐号名
groupmod –n 新组名 原组名:此命令由于改变用户组的名称
eg:sudo groupmod -n newgroupname oldgroupname
c. 删除群组:
groupdel 组名:该命令用于删除指定的组帐号
eg:groupdel newgroup
d. 新建用户:
命令: useradd [-d home] [-s shell] [-c comment] [-m [-k template]]
[-f inactive] [-e expire ] [-p passwd] [-r] name
主要参数
-c:加上备注文字,备注文字保存在passwd的备注栏中。
-d:指定用户登入时的启始目录。
-D:变更预设值。
-e:指定账号的有效期限,缺省表示永久有效。
-f:指定在密码过期后多少天即关闭该账号。
-g:指定用户所属的群组。
-G:指定用户所属的附加群组。
-m:自动建立用户的登入目录。
-M:不要自动建立用户的登入目录。
-n:取消建立以用户名称为名的群组。
-r:建立系统账号。
-s:指定用户登入后所使用的shell。
-u:指定用户ID号。
举例: # useradd -g oinstall -G dba oracle 创建Oracle用户
使用useradd命令来创建新用户。例如:
sudo useradd newuser
这将会创建一个名为newuser的新用户。默认情况下,这个用户不会创建主目录,也不会有shell访问权限。为了创建一个具有主目录和shell访问权限的用户,你可以使用-m和-s选项:
sudo useradd -m -s /bin/bash newuser
这里-m选项会创建用户的主目录(通常位于/home/newuser),-s /bin/bash则会设置用户的默认shell为bash。
e. 删除用户
命令: userdel 用户名
删除指定的用户帐号
userdel –r 用户名(userdel 用户名;rm 用户名):删除指定的用户帐号及宿主目录
例:#useradd -g root kkk //把kkk用户加入root组里
使用userdel命令来删除用户。例如:
sudo userdel newuser
这将会删除newuser用户。如果用户的家目录还存在,并且你想要同时删除它,可以使用-r选项:
sudo userdel -r newuser
f. 修改用户
命令: usermod
修改已有用户的信息
usermod –l 旧用户名 新用户名: 修改用户名
usermod –L 用户名: 用于锁定指定用户账号,使其不能登陆系统
usermod –U 用户名: 对锁定的用户帐号进行解锁
passwd –d 用户名: 使帐号无口令,即用户不需要口令就能登录系统
例:#usermod -l user2 user1 //把用户user2改名为user1
启动、关闭防火墙
在Linux系统中,启动和关闭防火墙的操作通常依赖于你所使用的防火墙工具。
永久打开或则关闭
chkconfig iptables on
chkconfig iptables off
即时生效:重启后还原
service iptables start
service iptables stop
或者:
/etc/init.d/iptables start
/etc/init.d/iptables stop
你可以使用以下命令来清空所有防火墙规则、删除所有用户自定义的链、将所有计数器归零,并设置默认策略:
iptables -F:清空所有防火墙规则。
iptables -X:删除所有用户自定义的链。
iptables -Z:将所有计数器归零。
iptables -P INPUT DROP:设置默认策略为拒绝所有进入的数据包。
iptables -P OUTPUT ACCEPT:设置默认策略为允许所有输出的数据包。
iptables -P FORWARD DROP:设置默认策略为拒绝所有转发的数据包。
执行以上命令后,iptables防火墙即已启动并配置完成。
关闭iptables防火墙:
你可以使用以下命令来停止iptables服务:
service iptables stop 或者 systemctl stop iptables
如果你想禁止iptables防火墙在系统重启后自动启动,可以使用以下命令:
chkconfig iptables off 或者 systemctl disable iptables
启动VSFTP服务
在Linux系统中,vsftpd(Very Secure FTP Daemon)是一个广泛使用的FTP服务器软件。要启动vsftpd服务,你需要根据你的Linux发行版使用适当的服务管理命令。
即时启动: /etc/init.d/vsftpd start
即时停止: /etc/init.d/vsftpd stop
开机默认VSFTP服务自动启动:
方法一:(常用\方便)
[root@localhost etc]# chkconfig --list|grep vsftpd ( 查看情况)
vsftpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@localhost etc]# chkconfig vsftpd on (执行ON设置)
或者:方法二:
修改文件 /etc/rc.local , 把行/usr/local/sbin/vsftpd & 插入文件中,以实现开机自动启动。
使用systemctl(适用于使用systemd的系统,如大多数现代Linux发行版)
启动vsftpd服务:
sudo systemctl start vsftpd
设置vsftpd服务开机自启:
sudo systemctl enable vsftpd
检查vsftpd服务状态:
sudo systemctl status vsftpd
使用service命令(适用于较旧的系统或使用init.d脚本的系统)
启动vsftpd服务:
sudo service vsftpd start
设置vsftpd服务开机自启:
sudo chkconfig vsftpd on
或者在某些系统上:
sudo update-rc.d vsftpd enable
检查vsftpd服务状态:
sudo service vsftpd status
使用init.d脚本直接
你也可以直接调用/etc/init.d/vsftpd脚本来管理服务:
启动vsftpd服务:
sudo /etc/init.d/vsftpd start
设置vsftpd服务开机自启:
使用chkconfig或update-rc.d,如上面所述。
检查vsftpd服务状态:
sudo /etc/init.d/vsftpd status
配置vsftpd
在启动vsftpd服务之前或之后,你可能需要编辑其配置文件以根据你的需求进行自定义。vsftpd的主配置文件通常位于/etc/vsftpd.conf。你可以使用文本编辑器(如nano或vim)来编辑它:
sudo nano /etc/vsftpd.conf
在配置文件中,你可以设置各种选项,例如监听地址、端口、用户访问权限、匿名访问等。确保在编辑配置文件后重启vsftpd服务以使更改生效。
防火墙设置
如果你的系统上运行有防火墙(如iptables或ufw),你还需要确保FTP所需的端口(通常是21端口用于FTP控制连接,以及一个范围用于数据连接,如20000-20010)是开放的。
例如,使用ufw开放FTP端口:
sudo ufw allow 21/tcp
sudo ufw allow 20000:20010/tcp
测试FTP服务
启动并配置好vsftpd之后,你可以从另一台计算机上使用FTP客户端连接到该服务器进行测试,或者从服务器上使用命令行工具(如ftp命令)进行本地测试。确保使用正确的用户名和密码(如果设置了),以及正确的服务器地址和端口号(如果需要的话)。
Linux:vi技巧
a. 进入输入模式
新增 (append)
a :从光标所在位置後面开始新增资料,光标後的资料随新增资料向後移动。
A :从光标所在列最後面的地方开始新增资料。
插入 (insert)
i :从光标所在位置前面开始插入资料,光标後的资料随新增资料向後移动。
I :从光标所在列的第一个非空白字元前面开始插入资料。
开始 (open)
o :在光标所在列下新增一列并进入输入模式。
O : 在光标所在列上方新增一列并进入输入模式。
b. 退出vi
在指令模式下键入:q,:q!,:wq或:x(注意:号),就会退出vi。其中:wq和:x是存盘退出,而:q是直接退出,如果文件已有新的变化,vi会提示你保存文件而:q命令也会失效,这时你可以用:w命令保存文件后再用:q 退出,或用:wq或:x命令退出,如果你不想保存改变后的文件,你就需要用:q!命令,这个命令将不保存文件而直接退出vi。
c. 删除与修改文件的命令:
x:删除光标所在字符。
dd:删除光标所在的列。
r:修改光标所在字元,r 後接著要修正的字符。
R:进入取替换状态,新增文字会覆盖原先文字,直到按 [ESC] 回到指令模式下为止。
s:删除光标所在字元,并进入输入模式。
S:删除光标所在的列,并进入输入模式。
d. 屏幕翻滚类命令
Ctrl+u: 向文件首翻半屏
Ctrl+d: 向文件尾翻半屏
Ctrl+f: 向文件尾翻一屏
Ctrl+b: 向文件首翻一屏
nz: 将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。
e. 删除命令
ndw或ndW: 删除光标处开始及其后的n-1个字
do: 删至行首
d$: 删至行尾
ndd: 删除当前行及其后n-1行
x或X: 删除一个字符,x删除光标后的,而X删除光标前的
Ctrl+u: 删除输入方式下所输入的文本
f. 搜索及替换命令
/pattern: 从光标开始处向文件尾搜索pattern
?pattern: 从光标开始处向文件首搜索pattern
n: 在同一方向重复上一次搜索命令
N: 在反方向上重复上一次搜索命令
:s/p1/p2/g: 将当前行中所有p1均用p2替代
:n1,n2s/p1/p2/g: 将第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g: 将文件中所有p1均用p2替换
g. 复制,黏贴
(1) 选定文本块,使用v进入可视模式;移动光标键选定内容
(2) 复制选定块到缓冲区,用y;复制整行,用yy
(3) 剪切选定块到缓冲区,用d;剪切整行用dd
(4) 粘贴缓冲区中的内容,用p
h. 其他
在同一编辑窗打开第二个文件,用:sp [filename]
在多个编辑文件之间切换,用Ctrl+w