vipivp常用linux命令
基础安装
# CentOSsudo yum install epel-release |
命令行Tips
进程及端口
# 查看端口占用情况netstat -ap | grep 端口号 # 查看某一个端口netstat -ntlptop -p 进程ID:查看进程的实时情况,包括内存大小,内存占用率、CPU占用率,运行时间cat /proc/进程ID/status:查看进程详细信息,包括线程数,线程名称,线程状态,占用内存大小pstree -p 进程ID:查看线程的进程数以及进程IDlsof -i :端口号 # 查看端口占用情况,不仅能看到哪个进程开启的端口,还能查看谁在使用该端口lsof -i -n -P | egrep ':8000.+ESTABLISHED' # 查看8000端口的连接列表lsof -i -n -P | egrep -c ':8000.+ESTABLISHED' # 查看8000端口的连接数字# 结束进程kill -s 9 进程ID |
查找与统计
ls -lR | grep "^-" | wc -l # 递归统计文件夹下所有文件的个数wc -l: 统计行数grep -c "词语" # 统计出现的次数grep 字符串 文件名 # 在文件中查找某个字符串grep ^字符串 文件名 # 在文件中查找以某字符串开始的行grep [0-9] 文件名 # 在文件中查找包含数字的行grep 字符串 -r 目录 # 在特定目录及其子目录中的文件查找strfdupes:快速查找重复文件find / -name filename # 精确查找某个文件find / -name '*.txt' # 模糊查找某个文件find / -mmin -60 # 查找60分钟内修改的文章find / -type d -mtime -1 # 查找1天内修改过的文件夹(好吧,我用了rm -rf / 命令才知道的) |
文件操作
# 压缩tar -czvf 结果.tar.gz 目标/ # 打包并使用gzip压缩tar -cjvf 结果.tar.bz2 目标/ # 打包并使用bzip2压缩zip *.zip file # 压缩file为zip格式zip -r *.zip file dir # 压缩文件或目录一起为zip格式zip -e 结果.zip 目标 # 压缩并加密(OSX可用)# 解压xz -d *.tar.xztar xvf *.tartar zxvf *.tgztar -xjf tar.bz2 # 解压bz2文件gunzip *.gz # 解压gz文件tar -xzf *.tar.gz# 复制cp 文件1 文件2cp -r 目录1 目录2 # 递归复制cp -a 目录1 目录2 # 递归复制目录,同时将文件属性也复制过去# 文件分割split -b 1024m # 文件分隔-b表示按大小分隔,-l表示按行数分隔# 查看文件内容cat filename | more # 表示分页查看文件内容# 输出内容到文件cat ./test.conf >> /etc/supervisord.confsudo bash -c 'cat ./test.conf >> /etc/supervisord.conf' # 上一句如果出现权限问题可以尝试使用这条命令# 建立链接,最好都用绝对路径软连接:ln -s 源 目的地软连接可以给目录创建,如果删除了对源文件不会有影响硬连接:ln -d 源 目的地硬连接不能给目录创建,对连接做的更改会影响源文件,只能在同一文件系统中创建# 文件创建mkdir -p path/2 # 创建目录树mkdir -pv path/{path1,path2} # 建立子目录mkdir -v a+wt path # 创建一个粘滞模式的文件,其他用户可以修改,但是只有该文件的owner才能进行删除操作,这条命令即使把0755(rwxr-xr-x)改为1777(rwxrwxrwt)# 找不同diff 文件1 文件2 # 找出两个文件的不同sdiff 文件1 文件2 # 以对比的方式找文件的不同# 批量转换文件编码find *.txt -exec sh -c "iconv -f GBK -t UTF8 {} > change.{}" \; # 这里将GBK转换为UTF8 |
远程ssh
# 配置免密码登录ssh-keygen -t dsa # 生成自己的ssh,然后将~/.ssh/id_dsa.pub的内容添加到主机的~/.ssh/authorized_keys里面面去# CentOS下的安装yum install openssh-clients# 传输文件scp 用户名@地址:远程路径 本地路径 # 获取/下载远程服务器的文件,目录加-r参数scp 本地路径 用户名@地址:远程路径 # 将本地文件上传到远程目录,目录加-r# 仅允许SSH登录,vim /etc/ssh/sshd_confPubkeyAuthentication yesAuthorizedKeysFile .ssh/authorized_keysPasswordAuthentication no#保存,然后重启ssh服务service sshd restart# 进制特定IP登录,vim /etc/hosts.denysshd:IP# 登录shell和非登录shell的区别: 加载的文件不同,登录式shell加载/etc/profile、/.bash_profile和~/.profile,而非登录式shell加载/etc/bashrc或者/etc/bash.bashrc、~/.bash_rc,所以在切换用户是最好加上-,即su - haofly就切换到那个心的地方了 |
包管理
dpkg -i *.deb # 安装deb包,但是它不会自动解决依赖,安装完成后还要使用apt-get -f install这条命令来安装没有安装好的依赖apt-cache show 包名 # 显示apt库里面的软件的版本号sudo apt-get clean # 自动清理安装程序时缓存的deb包sudo apt-get autoclean # 清理已卸载软件的无用的依赖包rpm -ql 包名 # 查询已经安装的包的文件路径 |
磁盘管理
sudo fdisk -lu # 显示硬盘及分区情况sudo fdisk /dev/sdb # 对某一硬盘进行分区(千万不要在当前硬盘进行分区)sudo mkfs -t ext4 /dev/sdb # 将硬盘格式化为ext4文件系统sudo df -lh # 显示硬盘挂载情况sudo mount -t ext4 /dev/sdb /mydata # 挂载某个分区文件为ext4vim /etc/fstab中添加UUID=硬盘的UUID /挂载位置 ext4 defaults 0 0 # 在系统启动时自动挂载硬盘blkid /dev/sda1 查看硬盘UUID用sudo blkidsudo du -h -d 1 /path # 获取指定目录下一级的各个目录的大小 |
用户管理
# 添加用户sudo useradd -s /bin/bash -d /home/username -m username# 修改用户密码sudo passwd username# 给用户添加sudo权限vim /etc/sudoers 修改如下内容# User privilege specification root ALL=(ALL:ALL) ALL # 在这一行下面写 username1 ALL=(ALL:ALL) ALL # 该用户可以执行所有sudo操作username2 ALL=NOPASSWD:/usr/bin/git # 该用户可以执行'sudo git'的操作# 查看所有用户cat /etc/passwd |
系统相关
lsb_release -a // 查看系统信息echo $HOSTTYPE // 查看系统位数cat /proc/cpuinfo # 查看CPU信息cat /etc/issue // Debian系列查看系统版本cat /etc/redhat-release // redhat系列查看系统版本# 更新系统sudo apt-get install update-manager-coresudo do-release-upgrade# 系统开关shutdown -h now # 关机shutdown -r now # 重启# 查看某个命令的系统调用strace + 命令: 这条命令十分强大,可以定位你程序到底是哪个地方出了问题# 增加虚拟内存sudo dd if=/dev/zero of=/swapfile bs=1024 count=500000 # 500MB,这两行是连在一起的,我日sudo mkswap /swapfilesudo chown root:root /swapfilesudo chmod 0600 /swapfilesudo swapon /swapfile |
防火墙
service iptables status # 查询防火墙状态vim /etc/sysconfig/iptables # 新增端口service iptables restart # 重启防火墙 |
其它工具
supervisor
进程监控工具,apt-get install supervisor进行安装,默认的监控配置都放在/etc/supervisor/conf.d里面,配置文件语法如下:
[group:fenzu]programs:一个进程名,另一个进程名 # 这样可以分组控制一批program[program:去一个进程名称]process_name=%(program_name)s_%(process_num)02d # 当前进程的名称directory=/home/... # 工作目录,启动程序前会切换到这个地方command=python manage.py runserver .... # 启动命令autostart=true # 在supervisord启动的时候自动启动autorestart=true # 程序异常退出后自动重启startretries=3 # 启动失败自动重试次数,默认是3user=root # 用哪个用户启动numprocs=8 # 进程数redirect_stderr=true # 把stderr重定向到stdout,默认为falsestdout_logfile=/var/log/... # 日志文件位置,若该目录不存在则无法正常启动,需要手动创建目录 |
常用操作
supervisord # 启动所有监控 |
CURL
curl -o a.txt url # 将文件下载到本地并命名为a.txtcurl -O url # 将文件下载到本地用它本来的命名 |
FTP
Crontab定时任务
crontab -e # 直接打开定时任务文件进行编辑格式如下:第1列:分钟第2列:小时第3列:日第4列:月第5列:星期第6列:命令其中,每一列可以逗号和小横线表示特殊的意义,比如3,15 8-11 * * * 命令 # 表示在上午8点到11点的第3和15分钟执行* 23 * * * 命令 # 注意这个表示的是23点的每分钟都执行0 */1 * * * 命令 # 每隔一小时需要注意的是coontab是不会自动加载环境变量的哟,所以有时候发现命令没有被执行,可能是这个原因# crontab日志,默认是关闭的,如果要打开可以在配置文件里面进行打开,vim /etc/rsyslog.d/50-defaullt.confcron.* /var/log/cron.log # 将cron前面的注释去掉service rsyslog restart # 重启rsyslog |
其他命令
cd -: 返回上一次的目录,真他妈实用history:查看历史命令,如果需要查看命令执行时间,需要先export HISTTIMEFORMAT='\%F \%T 'tzselect:更改时区# 命令命名,例如如果想通过python命令调用python3而不是默认的python2,那么可以这样子:alias python=python3alias pip=pip3alias run8000='python manage.py runserver 0.0.0.0:8000'# yes命令:重复输出字符串,不带参数则默认输出y。例如 `yes | apt-get install xxx`会默认输出y# 网络相关ifdown eth0 # 禁用eth网卡ifup eth0# 随机数echo $RANDOM# 除法echo $RANDOM / 28 | bcecho $RANDOM % 28 | bc |
Shell Script
数据结构
VAR2=${VAR:-haofly} # 如果变量VAR不存在,后面就是它的默认值VAR2=${VAR/.tar.gz} # 如果VAR的值为haofly.tar.gz,那么VAR2=haofly,一种替换length=$(#array[@]}或者length=$(#array[*]} # 获取数组长度 |
流程控制
if语句: -z:为空 -n:不为空 -gt:大于 # 判断文件是否存在if [ ! -f "$filename" ]; thentouch "$filename"fi# 判断文件是否为空if [[ ! -s filename ]]; thenecho 'a'fi |
特殊符号
[[]]:双中括号,之间的字符不会发生文件名扩展或者单词分割(()):双小括号,整数扩展,其中的变量可以不适用$符号前缀$?:上一条命令的退出码 |
日期处理
date +"%s" # 按照时间戳来显示date +"%m-%d-%y" # mm-dd-yy格式date +"%T" # 仅显示时间,比如10:44:00 |
随机数
$RANDOM # 生成一个随机数
特殊操作
. /etc/*.conf # 导入配置文件,这样配置文件里面的变量就可以直接使用了
find ./ -name "*.log" -mtime -1 | which read line; do tail -n 5 "$line" > ~/bak/"$line"; done # 查找,然后按行进行执行while read line do 语句 done # 一行一行地进行处理,真正的处理# awk:以行为单位将输入进行处理,貌似这里的处理智能进行print -F 参数将行做分割,例如:ps | awk -F ' ' '\{print $1\}' # 将ps的第二列输出# sed:同样以行为单位将输入进行处理 -n 输出第几行,例如:ps | sed -n '1p' # 将ps的第一行输出# xargs:将上一个管道的输出直接作为这个管道的输入 ps | grep python | awk -F ' ' '\{print $1\}' | xargs killdate+\%Y-\%m-\%d # 获取今天的日期 |
原文地址:https://haofly.net/linux/index.html
vipivp常用linux命令的更多相关文章
- 十五个最常用Linux命令行 - imsoft.cnblogs
众多Linux管理员在使用Linux的时候会经常使用到很多Linux命令行,其中有绝大部分不是经常使用到的.在本文中主要为大家总结了经常使用的十五个最常用Linux命令行,希望对刚刚接触Linux命令 ...
- 常用Linux命令小结
常用Linux命令小结 Linux下有很多常用的很有用的命令,这种命令用的多了就熟了,对于我来说,如果长时间没有用的话,就容易忘记.当然,可以到时候用man命令查看帮助,但是,到时候查找的话未免有些临 ...
- 77个常用Linux命令和工具
77个常用Linux命令和工具 Linux管理员不能单靠GUI图形界面吃饭.这就是我们编辑这篇最实用Linux命令手册的原因.这个指南是特别为Linux管理员和系统管理员 设计的,汇集了最有用的一些工 ...
- 常用Linux命令笔记
任何脱离业务的架构都是耍流氓 只记录实际常用的Linux命令 常用Linux命令 查找安装路径: whereis nginx 查询nginx进程: ps aux|grep nginx 查看 CentO ...
- 常用 Linux 命令的基本使用
常用 Linux 命令的基本使用 操作系统 作用:管理好硬件设备,让软件可以和硬件发生交互类型 桌面操作系统 Windows macos linux 服务器操作系统 linux Windows ser ...
- 【Linux基础】常用Linux命令: cd, cp, ls, mkdir, mv, rm, su, uname
常用Linux命令:cd, cp, ls, mkdir, mv, rm, su, uname cd命令:切换当前工作目录至 dirName(目录参数) 其中 dirName 可为绝对路径或相对路径.若 ...
- # 常用linux 命令和相关问题解决
最近试着自己部署了服务器,在unbantu的环境下 学习了很多新知识 也遇到了很多问题,现在腾出手了,总结一下 常用Linux命令 目录操作 pwd: 查看当前路径 cd: 移动 cd .. : 返回 ...
- Linux - 常用 Linux 命令的基本使用
常用 Linux 命令的基本使用 目标 理解学习 Linux 终端命令的原因 常用 Linux 命令体验 01. 学习 Linux 终端命令的原因 Linux 刚面世时并没有图形界面,所有的操作全靠命 ...
- 几个常用linux命令语句
几个常用linux命令 英文原文:What are the most useful "Swiss army knife" one-liners on Unix? 下面的这些内容是 ...
随机推荐
- 树结构系列(三):B树、B+树
树结构系列(三):B树.B+树 文章首发于「陈树义」公众号及个人博客 shuyi.tech,欢迎访问更多有趣有价值的文章. 文章首发于「陈树义」公众号及个人博客 shuyi.tech 平衡二叉树的查找 ...
- “知疫”疫情防控可视化平台——NABCD分析
"知疫"疫情防控可视化平台 项目 内容 这个作业属于那个课程 2021春季学期软件工程(罗杰.任健) 这个作业的要求在哪里 初次邂逅,需求分析 1 NABCD分析 NEED 目前多 ...
- Spring(11) - Introductions进行类扩展方法
Introductions(引用),在 Aspect 中称为类型间的声明,使切面能够声明被通知的对象(拦截的对象)实现给定的接口,并提供该接口的实现. 简单点说可以将一个类的实现方法复制到未实现的类中 ...
- JAVAEE_Servlet_20_登录注册功能
实现登录注册功能 注册功能 import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import j ...
- json 标准库
1. 序列化的简单概念 2. json 标准库 2.1 json.dumps() 2.2 json.loads() 2.3 json.dump() 2.4 json.load() 1. 序列化的简单概 ...
- 自动AC机qwq(大雾)以及trie图fail图的一些结论
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<string&g ...
- ASP微信服务号H5客户登陆,且获取客户授权的用户基本信息
ASP微信服务号H5客户登陆,且获取客户授权的用户基本信息是需要客户授权,下面讲解详细步骤: 第一步:客户点击登录页,自动跳转到微信服务器端获取code 第二步:用第一步获取的code去获取客户的ac ...
- C#-播放器相关
axWindowsMediaPlayer1.URL= 设置路径 axWindowsMediaPlayer1.Ctlcontrols.play();开始 axWindowsMediaPlayer1.Ct ...
- Andrew Ng机器学习算法入门(二):机器学习分类
机器学习的定义 Arthur Samuel给出的定义,Field of Study that gives computers the ability to learn without being ex ...
- 【python】Leetcode每日一题-搜索排序数组2
[python]Leetcode每日一题-搜索排序数组2 [题目描述] 已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同. 在传递给函数之前,nums 在预先未知的某个下标 k( ...