Linux常用命令总结

本文汇总了Linux和Windows系统中常用的命令,包括Linux下的进程管理、文件操作、网络配置、权限设置等,以及Windows下的网络诊断、进程管理命令。深入解析了ps、useradd、base64等Linux命令的使用方法及watch命令的功能介绍,同时提供了Windows下查看端口、进程管理和系统信息的实用指令。
摘要由CSDN通过智能技术生成

一、Linux命令总结:

查找路径名称包含ifcfg-eth的路径:find / | grep ifcfg-eth
查找名称为相应参数的文件或文件夹路径:find / -name "ifcfg-eth0"find / -name 'spark-sql-kafka*'

mongo使用了哪些端口:netstat -ntulp|grep mongo
端口40001被什么程序占用:netstat -ntulp|grep 40001
注:若没有该工具在Centos7.2中执行yum -y install net-tools

ssh指定密钥文件:ssh -i /path/to/private_key user@host

sudo + 操作命令暂时切换到超级用户模式以执行超级用户权限,有时间限制,Ubuntu默认为一次时长15分钟。
sudo -i使用root用户的环境变量,跳转到/root,拥有超级管理员权限
sudo -s使用当前用户的环境变量,不跳转目录;拥有超级管理员权限

统计所有Zookeeper的连接:netstat -antp | grep 2181 | wc -l
上面的命令包含等待的和正在通信的,如果查看正在通信的:netstat -antp | grep 2181 | grep ESTABLISHED | wc -l

history过滤命令:history | grep spark-submit
-N: 显示历史记录中最近的N个记录:history | grep zkCli.sh -2
查看历史执行记录后10条:history 10

查看22端口现在运行的情况:

[root@hui ~]# lsof -i :22
COMMAND  PID USER   FD   TYPE DEVICE SIZE NODE NAME
sshd    1409 root    3u  IPv6   5678       TCP *:ssh (LISTEN)


COMMAND:进程的名称
PID:进程标识符
USER:进程所有者
FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
TYPE:文件类型,如DIR、REG等
DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称

查看linux系统是物理机还是虚拟机:

物理机,返回机器型号:
[root@laocalhost ~]# dmidecode -s system-product-name
S910-X31E
[root@192-110-110-110 ~]# dmidecode -s system-product-name
RH2288 V3

虚拟机:
[root@dev01-188 ~]# dmidecode -s system-product-name
KVM
[root@host-192-110-110-110 ~]# dmidecode -s system-product-name
OpenStack Nova
[root@node01 ~]# dmidecode -s system-product-name
VMware Virtual Platform

挂载磁盘命令:

mount /opt/rhel-server-6.4-x86_64-dvd.iso /media/ -o loop

-o 是mount命令的一个参数,Options的首字母,后面跟bai着mount选项喽
loop:用du来把一个文件当成硬盘分区mount到目录
ro:采用只zhi读方式挂接设备
rw:采用读写方式挂接设备
iocharset:指定访问文件系统所用字符集

[root@host-110 yum.repos.d]# mount /mnt/huiq/CentOS-7-x86_64-DVD-1708.iso /media/ 
mount: /dev/loop0 写保护,将以只读方式挂载

取消挂载命令:umount /media/

设置网络代理:

场景:有些linux服务器处于内网,并且没有公网ip,故要想与外网进行http/https通信只能通过nat或者加proxy的方式。nat服务器有网段的限制,而http/https proxy代理则没有,使用起来也方便。

在文件 .bashrc 中添加
export http_proxy="proxy IP:port"
如
export http_proxy="192.168.0.1:8080"

也可以直接在Linux中执行命令export http_proxy="192.168.0.1:8080"

解压缩:gzip -d syslog.5.gz
压缩:gzip syslog.5

解压缩:unzip -d /temp test.zip
压缩:zip -vr apache-ambari.zip apache-ambari-2.7.5-src

抓包:tcpdump -i eth0 host 192.168.101.45

修改属主:chown -R root.root /etc/rsync/rsyncd.secrets
赋予文件相应的权限(r为4,w为2,x为1):chmod 644 /backup/hehe/ZC.rar

删除用户:userdel -r omm
删除用户所有进程(慎用,可别把root用户所有进程删了):pkill -u omm

查找该内容在该文件的第几行:grep -rn "hehe" hehe.txt
输出:6:hehe
查找该内容在该文件中有几行:cat nohup.out | grep "社交治理失败" | wc -l
输出:12
查看目录下文件数量(不包含子目录):ls -l | grep "^-" | wc -l
查看目录(-t 以文件修改时间排序;-r, –reverse 依相反次序排列;-h, –human-readable 以容易理解的格式列出文件大小 (例如 1K 234M 2G)):ll -rth
我们通常使用 ll 来查看文件列表以及文件大小,但是默认单位是B,看起来很不方便,可以加入参数 --block-size=M/G 来修改单位
ll --block-size=K #以Kb为单位显示大小
ll --block-size=M #以Mb为单位显示大小
ll --block-size=G #以Gb为单位显示大小

将application.properties文件中所有的2018-11-6替换为2018-11-10:sed -i "s/2018-11-6/2018-11-10/g" application.properties
linux下查看文件第几行内容的方法:
nl file-name |sed -n '5p'
head -n file_name|tail -1
sed -n '5p' filename
awk 'NR==5' filename

vim 编辑器技巧总结:
:s/vivian/sky/ 替换当前行第一个 vivian 为 sky
:s/vivian/sky/g 替换当前行所有 vivian 为 sky
:n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky
:n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky,n 为数字,若 n 为 .,表示从当前行开始到最后一行
:%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky
:%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky,可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符
:s#vivian/#sky/# 替换当前行第一个 vivian/ 为 sky/
:%s+/oradata/apras/+/user01/apras1+ (使用+ 来 替换 / ):/oradata/apras/替换成/user01/apras1/

:set nu 显示行号

vim 粘贴取消自动缩进:
:set paste
进入paste模式之后,再按i进入插入模式,进行复制、粘贴就很正常了
粘贴完毕后,输入下面指定关闭paste模式
:set nopaste

vim 显示中文乱码:
临时办法:每次打开 Vim 后,输入 set encoding=utf-8
永久性办法:在当前用户目录下,新建 .vimrc 文件,在里面添加 set encoding=utf-8

 
场景:Linux下使用cp,mv,rm等命令时经常会碰到“Argument list too long”错误,这主要是因为这些命令的参数太长,即文件个数过多。
解决(要删除test文件夹下以jpg结尾的文件):find test/ -name "*.jpg" | xargs -i rm {}

 
场景:用xftp将在Windows中写好的shell脚本上传到Linux中执行报错

[root@TJY-HD-01 ldjsc]# sh ldjsc.sh 
ldjsc.sh: line 2: $'\r': command not found
: No such file or directoryopclient/bigdata_env

解决:用vim打开该sh文件,输入:
:set ff
回车,显示fileformat=dos,重新设置下文件格式,输入:
:set ff=unix
保存退出:
:wq
再执行,竟然可以了
 

清除缓存:

[root@hui ~]# echo 1 > /proc/sys/vm/drop_caches

注:释放内存前先使用 sync 命令做同步,以确保文件系统的完整性,将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件。否则在释放缓存的过程中,可能会丢失未保存的文件。
/proc 是一个虚拟文件系统,可以通过对它的读写操作作为与 kernel 实体间进行通信的一种手段。也就是说可以通过修改 /proc 中的文件,来对当前 kernel 的行为做出调整。也就是说我们可以通过调整 /proc/sys/vm/drop_caches 来释放内存。
drop_caches 的值可以是 0-3 之间的数字,代表不同的含义:
0:不释放(系统默认值)
1:释放页缓存(PageCache)
2:清除目录项和 inode
3:释放所有缓存(清除页面缓存,目录项和 inode)
释放完内存后改回去让系统重新自动分配内存。
echo 0 >/proc/sys/vm/drop_caches

Linux下查看文件编码格式:
在Vim中可以直接查看文件编码 :set fileencoding 即可显示文件编码格式。执行后会显示这样的信息:
fileencoding=utf-8

Linux下文件编码格式转换:
文件比较小的时候可以在Windows用UltraEdit等编辑软件直接转换,但是我有一次TXT文件有2.6G大小,UltraEdit就有点扛不住了。换个思路,可以用Linux下的iconv来转换

iconv -f GBK -t UTF-8 file1 -o file2

其中的参数的意义表示
-f From 某个编码
-t To 某个编码
-o 输出到文件

可能会报错:

iconv: illegal input sequence at position 1678866

原因:
编码转换的时候,如果你的源格式设定为 GB2312 的话,而且在转换成 UTF-8 的时候,发现程序会报“illegal input sequence at position xxxx”的错误。这是由于你之前的做的假定有问题。GB2312 是国标里面一个最小也是最早的中文编码标准。其中,只涵盖了 6,763 个汉字。所以你需要转换的文件的原始的格式可能并不是 GB2312 编码。这个时候,你可以用 GB18030 做为源格式来进行转换。GB18030 是最新的国家标准,包含了 27,564 个汉字,而且向下兼容 GB2312 和 GBK。

解决:

iconv -f gb18030 -t UTF-8 hehe.Txt -o heheutf8.Txt

如果还是有的汉字字符识别不出来的话可以加-c参数,即忽略无效的字符,比如“常袆?”转换完成为“常袆”
后续遇到这种情况上面的命令同样适用(即第一个参数是gb18030):后来又遇到了编码格式是这种的文件。
在这里插入图片描述在这里插入图片描述
生成这种文件的原因是数据库导出文件的时候选的这个
在这里插入图片描述

如果不想每次回话连接之后都执行source变量的话,可以把命令放到~/.bashrc文件中:
vim ~/.bashrc
在末尾添加该行:
source /mnt/huiq/hadoopclient/bigdata_env

 

1.ps -ef|grep syslog或者ps aux|grep syslog:

注:Linux下显示系统进程的命令ps,最常用的有ps -ef 和ps aux。这两个到底有什么区别呢?两者没太大差别,讨论这个问题,要追溯到Unix系统中的两种风格,System V风格和BSD 风格,ps aux最初用到Unix Style中,而ps -ef被用在System V Style中,两者输出略有不同。现在的大部分Linux系统都是可以同时使用这两种方式的。
来自:https://www.linuxidc.com/Linux/2016-07/133515.htm
ps -ef 是用标准的格式显示进程的、其格式如下
这里写图片描述
其中各列的内容意思如下:

  • UID //用户ID、但输出的是用户名
  • PID //进程的ID
  • PPID //父进程ID
  • C //进程占用CPU的百分比
  • STIME //是命令启动的时间,如果在 24 小时之内启动的,则输出格式为”HH:MM”(小时:分钟),否则就是”Mmm:SS”(月份英语单词前 3 个字母+第几号)
  • TTY //该进程在那个终端上运行,若与终端无关,则显示? 若为pts/0等,则表示由网络连接主机进程。
  • TIME //是累积的 CPU 时间(user+system),显示格式通常是”MMM:SS”。(分钟:秒) 可以看出,这里并不是指从命令启动开始到现在所花的时间。
  • CMD //命令的名称和参数

ps aux 是用BSD的格式来显示、其格式如下
这里写图片描述
同ps -ef 不同的列有:

  • USER //用户名
  • %CPU //进程占用的CPU百分比
  • %MEM //占用内存的百分比
  • VSZ //该进程使用的虚拟內存量(KB)
  • RSS //该进程占用的固定內存量(KB)(驻留中页的数量)
  • STAT //进程的状态
  • START //该进程被触发启动时间
  • TIME //该进程实际使用CPU运行的时间

其中STAT状态位常见的状态字符有:

  • D //无法中断的休眠状态(通常 IO 的进程);
  • R //正在运行可中在队列中可过行的;
  • S //处于休眠状态;
  • T //停止或被追踪;
  • W //进入内存交换 (从内核2.6开始无效);
  • X //死掉的进程 (基本很少见);
  • Z //僵尸进程;
  • < //优先级高的进程
  • N //优先级较低的进程
  • L //有些页被锁进内存;
  • s //进程的领导者(在它之下有子进程);
  • l //多线程,克隆线程(使用 CLONE_THREAD, 类似 NPTL pthreads);
  • + //位于后台的进程组;

CPU占用最多的前10个进程ps auxw|head -1;ps auxw|sort -rn -k3|head -10
在这里插入图片描述
参考:Linux终端查看最消耗CPU内存的进程如何在 Linux 中找出内存消耗最大的进程

内存消耗最多的前10个进程ps auxw|head -1;ps auxw|sort -rn -k4|head -10或者ps -eo pid,ppid,%mem,%cpu,cmd --sort=-%mem | head或者top -c -b -o +%MEM | head -n 20 | tail -15
在这里插入图片描述
在这里插入图片描述
参数解析:

  • sort #排序命令
  • -nr #默认使用字符串排序n代表使用数值进行排序 默认从小到大排序 r代表反向排序
  • -k4 #以第4列进行排序
2.pid_max,ulimit -u和thread_max之间的区别:
# 这意味着我可以在我的系统中同时执行32768个进程,这些进程可以在不同的内存空间中运行。
cat /proc/sys/kernel/pid_max
32768
# 查看目前进程数为多少
ps -eLf | wc -l
3317

# 这意味着我可以在共享内存空间中拥有126406个线程。
cat /proc/sys/kernel/threads-max
126406

# 它表示用户在特定时间可以拥有的总进程数。这意味着用户可以在某个时间点创建的所有进程都可以运行63203进程。
ulimit -u
63203

参考:pid_max,ulimit -u和thread_max之间的区别

3.useradd与adduser的区别:

  useraddadduser都是创建新的用户。

  在CentOs下useraddadduser是没有区别的都是在创建用户,在home下自动创建目录,没有设置密码,需要使用passwd命令修改密码。

  而在Ubuntu下useraddadduser有所不同:

  • useradd在使用该命令创建用户是不会在/home下自动创建与用户名同名的用户目录,而且不会自动选择shell版本,也没有设置密码,那么这个用户是不能登录的,需要使用passwd命令修改密码。
  • adduser在使用该命令创建用户是会在/home下自动创建与用户名同名的用户目录,系统shell版本,会在创建时会提示输入密码,更加友好。

  userdel只能删除用户,并不会删除相关的目录文件。userdel -r 可以删除用户及相关目录。

参考:【系统运维】Linux系统下新增用户命令useradd与adduser的区别

4.base64命令的使用:
# 将编码放到文件中
echo ''`base64 -w 0 /mnt/大数据组件安装.pdf | perl -pe's/\n/\\n/g'`'' > hehe2.txt

# 解码回原文件
cat hehe2.txt | base64 --decode > de.pdf
5. watch 介绍:

  linux 命令 watch 是周期性的用来执行某命令,并把某命令执行结果输出到屏幕上。使用 watch 命令,可以周期性的监测并输出某命令的执行结果到屏幕上,省得手动一遍一遍运行某命令,提高工作效率。

参数说明
-hwatch帮助文档
-n设置watch时间间隔,默认为2s
-d高亮显示变化的区域
-t不显示顶部的时间间隔信息

例如:watch -d hadoop fs -du -h /hbase/

参考:Linux watch命令使用介绍

二、Windows命令总结:

  • 列出8080端口运行的进程:netstat -ano | findstr 8080
  • 跟据PID寻找进程名称:tasklist | findstr 6568
  • 根据PID强制关闭某个进程:taskkill -PID 6568 -F
  • cmd从C盘进入D盘 d:
  • 运行程序输出到日志文件 python hehe.py > haha.log 或者追加python hehe.py >> haha.log
  • 查看本机ip:ipconfig
  • 清除DNS缓存:ipconfig /flushdns
    在这里插入图片描述
  • 打开我的电脑:Win + E
  • 锁定电脑:Win + L
  • 启动或停止服务:win+r打开compmgmt.msc管理
  • 注册表打开:按住电脑 win+R 快捷键,调出运行提示,并在输入 regedit,确定后即可调出。
  • 共享目录后在另一台PC机输入地址访问:\\(共享主机IP地址)
  • 在相应目录打开 cmd
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小强签名设计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值