文章目录
一、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的区别:
useradd
与adduser
都是创建新的用户。
在CentOs下useradd
与adduser
是没有区别的都是在创建用户,在home下自动创建目录,没有设置密码,需要使用passwd命令修改密码。
而在Ubuntu下useradd
与adduser
有所不同:
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 命令,可以周期性的监测并输出某命令的执行结果到屏幕上,省得手动一遍一遍运行某命令,提高工作效率。
参数 | 说明 |
---|---|
-h | watch帮助文档 |
-n | 设置watch时间间隔,默认为2s |
-d | 高亮显示变化的区域 |
-t | 不显示顶部的时间间隔信息 |
例如:watch -d hadoop fs -du -h /hbase/
二、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