当前位置: 首页 > news >正文

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 

相关文章:

  • Qt 容器类控件
  • 在Linux/Ubuntu/Debian中创建自己的命令快捷方式
  • Vue3快速上手(十七)Vue3之状态管理Pinia
  • 基于sortablejs实现拖拽element-ui el-table表格行进行排序
  • java Flink(四十二)Flink的序列化以及TypeInformation介绍(源码分析)
  • 探索ChatGPT时代下的下一代信息检索系统:机遇与挑战
  • 系统资源耗尽对服务器的影响
  • Linux 系统日志
  • (一)Linux+Windows下安装ffmpeg
  • docker opensearch arm64 运行失败解决方案
  • 国内ip切换是否合规?
  • 针对ETC系统的OBE-SAM模块设计方案
  • python --- 练习题3
  • AI基础知识(3)--神经网络,支持向量机,贝叶斯分类器
  • S32 Design Studio 中断
  • 《Java编程思想》读书笔记-对象导论
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • C语言笔记(第一章:C语言编程)
  • Koa2 之文件上传下载
  • Linux gpio口使用方法
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • Mysql数据库的条件查询语句
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 精彩代码 vue.js
  • 如何合理的规划jvm性能调优
  • 问题之ssh中Host key verification failed的解决
  •  一套莫尔斯电报听写、翻译系统
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • ​Python 3 新特性:类型注解
  • ​用户画像从0到100的构建思路
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #QT(一种朴素的计算器实现方法)
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • $forceUpdate()函数
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (SpringBoot)第七章:SpringBoot日志文件
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (一) springboot详细介绍
  • (译) 函数式 JS #1:简介
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .NET 分布式技术比较
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • .Net各种迷惑命名解释
  • .NET与 java通用的3DES加密解密方法
  • @31省区市高考时间表来了,祝考试成功
  • @angular/cli项目构建--Dynamic.Form
  • @configuration注解_2w字长文给你讲透了配置类为什么要添加 @Configuration注解
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成
  • [ C++ ] STL---string类的模拟实现
  • [.NET 即时通信SignalR] 认识SignalR (一)
  • []error LNK2001: unresolved external symbol _m