Linux常用操作集锦

[toc]

Linux常用操作集锦 - 20201126

工作中常用的记录,主要解决使用上的问题

linux常见命令汇总

0、ssh连接服务器命令

ssh 用户名@IP地址 -p 端口号

ssh root@120.76.102.69 -p 22

1、查询文件大小

(1)列出当前文件夹下所有文件对应的大小 du -sh * 
(2)查看服务器上硬盘的详细信息 df -h
(3)列出当前目录下每个文件的大小,同时也会给出当前目录下所有文件大小总和   ls -lht
(4)查看内存占用情况,某个应用
pmap命令   pmap [options] PID [PID ...]
(5)查看文件的详细年月日信息  ls -l --time-style=full

2、查看端口占用情况

netstat -ntlp   //查看当前所有tcp端口·
netstat -ntulp |grep 80   //查看所有80端口使用情况·
netstat -an | grep 3306   //查看所有3306端口使用情况

2.1、查看当前的连接数可以用:

ps aux | grep httpd | wc -l

netstat -tunlp 用于显示 tcp,udp 的端口和进程等相关情况。

3、查看物理机核数

cat /proc/cpuinfo |grep "processor"|sort -u|wc -l 

4、看看日志文件中的内容

cat 18_06_26.log | grep SC176793

5、查看文件的行号

查看行号 :set nu
隐藏行号 :set nonu
跳转指定函数:   :n   n表示行号

6、文件全选删除

dG

7、删除多个进程

kill -9 1 2 3 


通过空格分隔即可。获取进程号,并定时杀死

8、多行删除

(1)首先在命令模式下,输入“:set nu”显示行号; 
(2)通过行号确定你要删除的行; 
(3)命令输入“:32,65d”,回车键,32-65行就被删除了
如果无意中删除错了,可以使用‘u’键恢复(命令模式下)
(4)单行删除 是: dd

9、zip 压缩

zip -r xxx.zip xxx/*    将xxx整个目录压缩为zip

10、查看centos linux系统基本信息命令

查看linux版本 : cat /etc/redhat-release
查看内核版本命令: cat /proc/version
查看cpu信息  : cat /proc/cpuinfo
查看linux 磁盘信息 :fdisk -l

一、查看Linux系统版本的命令(3种方法)

1、cat /etc/issue,此命令也适用于所有的Linux发行版。

  [root@S-CentOS home]# cat /etc/issue
  CentOS release 6.5 (Final)
  Kernel \r on an \m

2、cat /etc/redhat-release,这种方法只适合Redhat系的Linux:

    cat /etc/redhat-release
  CentOS Linux release 7.7.1908 (Core)

3、lsb_release -a,即可列出所有版本信息:

  [root@S-CentOS ~]# lsb_release -a
  LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
  Distributor ID: CentOS

二、查看Linux内核版本命令(两种方法):

1、cat /proc/version
2、uname -a

11、批量删除某个关键词的进程,包含 wkhtmltopdf的所有进程

ps -ef|grep wkhtmltopdf |grep -v grep|cut -c 9-15|xargs kill -9

12、查看具体的时间

ll --full-time 

13、查询操作

(1)查询文件
find  / -name 文件名
(2)查找文件名中包含某字符(如"elm")的文件
find /home/lijiajia/ -name '*elm*'
find /home/lijiajia/ -name 'elm*'
find /home/lijiajia/ -name '*elm'
(3)查询并展示
find /home/lijiajia/ -name 'elm.cc' -ls 
(4)查看某个文件的大小
ls 文件名  -lh

14、python 中 2>&1的含义 nohup

2>&1是一个整体,>左右不能有空格,即将错误内容重定向输入到标准输出中去。

15、关于linux中文件夹权限和用户组

vim /etc/passwd 可以查看所有用户的列表
vim /etc/group 查看所有组信息

groups 查看当前登录用户的组内成员
groups test 查看test用户所在的组,以及组内成员
whoami 查看当前登录用户名

文件所有者、群组用户、其他用户
从左到右的说明 705
权限  权限数值    具体作用
r          4               read ,读取
w        2                write,写入
x         1                execute,执行

16、md5的生成规则,采用ossutil64

(1)home/humx/ossutil64 hash test/HFDNA200303A0127-505-709.g.vcf --type=md5
生成的是大写md5
(2)linux 中md5sum 生成md5

17、以112.74.206.50 服务器为例,挂载硬盘

(1)挂载硬盘相关命令

df -h:查看磁盘占用情况 df -T:查看所有磁盘的文件系统类型(type) fdisk -l:查看所有被系统识别的磁盘 mount -t type device dir:挂载device到dir umount 挂载目录 解除挂载 mount /dev/vdb1 /mnt 挂载到mnt,前提是目录需要有,没有就mkdir mount /dev/xdc1 /mnt2 挂载到mnt2,前提是目录需要有,没有就mkdir mount 256c54bbe9-nse42.cn-shenzhen.nas.aliyuncs.com:/ /BioDB2 前提是目录需要有,没有就mkdir

(2)阿里云官方推荐挂载方式:

mount -t nfs -o vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport 256c54bbe9-nse42.cn-shenzhen.nas.aliyuncs.com:/ /BioDB2

(3)解决nfs挂载错误wrong fs type, bad option, bad superblock

ubuntu: apt-get install nfs-common centOs yum install nfs-utils

(4)刚刚新买的高速云盘,需要先格式化

mount: /dev/vdd is write-protected, mounting read-only
需要执行 mkfs.ext4 /dev/vdd 的命令 然后 mount /dev/vdd /mnt3

(5)按量云盘释放操作

使用完毕之后将对应的磁盘卸载然后在云盘页面点击更多 释放就行了

(6)设置开机默认挂载

blkid /dev/sdb

vim /etc/fstab
在最后一行增加如下信息
UUID=b8c4a45f-ed74-3089-fcdb-0273de904d6d      /image    ext4    defaults    1 2

18、以wk进程为例,查询pid等信息

(1)使用 pidof 命令获取PID号
  pidof wk
(2)或者使用一长串组合命令用 | 连接来获得PID号
  ps -ef | grep wk  | grep -v grep | awk '{print $1;}'
  ps -ef                列出所有进程的信息
  grep wk            选出led进程
  grep - v grep     除去grep进程
  awk '{print $1;}'  打印第1列(PID所在的列)
 
(3)进程号保存在变量中 
   XXX=$(pidof processname)
        ps -ef|grep wkhtmltopdf | grep -v grep|awk '{print $2}'

19、修改linux上网络时间

(1)timedatectl status 查看时间各种状态:
Local time: Thu 2020-09-03 21:30:29 CST
Universal time: Thu 2020-09-03 13:30:29 UTC
RTC time: Thu 2020-09-03 21:30:28
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: yes
DST active: n/a

(2)timedatectl list-timezones: 列出所有时区
(3)timedatectl set-local-rtc 1 将硬件时钟调整为与本地时钟一致, 0 为设置为 UTC 时间
(4)timedatectl set-timezone Asia/Shanghai 设置系统时区为上海

(5)显示时间 :  date 
(6)修改时间  date -s  时间
    如:设置当前时间为:2018年12月10点50分
    date -s  ‘2018-12-14 10:50:00’
(7)根据网络同步时间
     使用ntp同步标准时间,ntp:网络时间协议(network time protol)
     安装:yum -y install ntp
     同步:ntpdate pool.ntp.org

20、linux服务器监控参数

(1)hdparm 检测硬盘的最大读取速度,安装 yum install -y hdparm
使用方法:
hdparm   -t  /dev/vdd
结果:
/dev/vdd:
Timing buffered disk reads: 422 MB in  3.01 seconds = 140.10 MB/sec

21、终端不能连接服务器系统

这个有可能是中间链路波动导致的临时性的问题,这个比较常见的
阿里云参考:https://help.aliyun.com/knowledge_detail/40573.html#WinMTR
您可以使用MTR测试一下链路质量
Windows下的mtr工具使用方法:https://help.aliyun.com/knowledge_detail/40573.html#WinMTR
Linux系统参考命令: #mtr -r IP

22、查看所有linux的任务进度

ps aux | less

查看系统中的每个进程。
ps -A
ps -e

23、数据库链接-命令行

mysql -u gabd3_read -h rds6ptaq4sar58z66h79public.mysql.rds.aliyuncs.com -P 3306 -p 密码


#####################################################
#[b][color=red]SHELL编程中返回0,为true[/color][/b]
#####################################################

#####################################################
# is running
#####################################################
running()
{
if [ "ABC" == "ABC$1" ]
then
echo "PID is FAILED..."
return 1;
else
CMD="ps -p $1|awk '{print \$1}'"
echo $CMD
r_pid=`ps -p $1|awk '{print \$1}'`
echo return the pid $r_pid
if [ "x$r_pid" == "xPID" ]
then
echo "PID $r_pid is FAILED!"
return 1;
else
echo "PID $r_pid is running..."
return 0;
fi
fi
}

#####################################################
#用法   判断一个pid是否在运行状态
#####################################################

PID=3152
if running $PID
then
echo "running..."
else
echo "failed!"
fi


ps -efww | grep -w 'wkhtmltopdf' | grep -v grep | cut -c 10-15 | xargs kill -9 获取到pid
ps -efww | grep -w 'wkhtmltopdf' | grep -v grep | cut -c 25-30 | xargs kill -9 获取日期,然后进行判断

1.拿到所有的进程中的日期
2.拿到的日期与当天日期判断,如果是前一天的日期就杀死

#!/bin/bash
date = ps -efww | grep -w 'wkhtmltopdf' | grep -v grep | cut -c 25-30
current_date =  `date +%b%d`
echo current_date.

 date -d 'yesterday' +%b%d   获取昨天日期 May16
 date +%b%d 当天 May17

Linux系统监测python程序挂掉并重启
1、shell脚本,fi后输入Enter键,不然会出错误,若在windows下编写shell脚本,上传到Linux后,vi 文件名,输入 :set ff?, 若为dos,则需要修改为Linux格式,:set ff=unix 然后输入:wq!保存退出。

#!/bin/sh
count=`ps -ef |grep /usr/local/jobmail/Study/TomasSendNew2.py |grep -v "grep" |wc -l`
echo $count
if [ 0 == $count ];then
nohup python2.7 /usr/local/jobmail/Study/TomasSendNew2.py > /usr/local/jobmail/Study/TomasSendNew2.log 2>&1 &
echo $count
fi
若TomasSendNew2.py正常运行,则count=1,若挂掉,则count=0,这时就需要重启。 
2、crontab 定时运行shell脚本 
定时触发.sh 
crontab -e 写入0 */3 * * * /usr/local/jobmail/Study/restartSend.sh,代表每隔三分钟运行.sh 
crontab -l 可查看crontab文件。

linux进程监控:判断是否存在,是否僵死进程,进行重启和杀死重启

最近做了一个进程调度框架,为了确保进程正常运行,进行了轮训检测;在进程不存在的时候,自动重启,如果存在,判断是否僵死,如果僵死,就kill掉,再自动重启;
直接上脚本:

轮询检测进程(cron)
创建/root/runcron 目录, (目录是自己随便建的)
	在这个目录下存放要执行的shell脚本,  参考脚本在下边;记得设置脚本的可执行权限
	chmod u+x filename
在  /etc/crontab 中添加自己的任务,/root/runcron 是自己创建的,
*/1 * * * * root run-parts /root/runcron
这样定时任务就自己执行了, 查看命令
tail -f /var/log/cron
日志会有执行的记录,如果没有执行, 就重新启动下crond服务,
/sbin/service crond reload   ##--->> 重新加载
/sbin/service crond restart   ## ---->重启服务

判断进程是否存在,从而重启或者杀死 ---亲测可用 20190517
##脚本
#!/bin/bash
#判断指定进程是否存在
result=`ps -ef | grep wkhtmltopdf | grep -v grep | wc -l`
if [ $result -le 0 ]; then
       #不存在, 重启
       #nohup java -Xms512m -Xmx1024m -jar /home/project/dbjob.jar &
      echo 'no kill'
else    
    #存在,判断状态
    #取进程状态,用来判断是否僵死
        val=`ps -aux | grep wkhtmltopdf | grep -v grep | awk '{print $8}'`
        if [ "$val" == "Sl" ];then
                # 取进程ID,用来kill掉进程
                pid=`ps -aux | grep wkhtmltopdf | grep -v grep | awk '{print $2}'`    
                kill -9 $pid
        fi  
fi

胡梦旭博客
请先登录后发表评论
  • latest comments
  • 总共0条评论