基础安装

# CentOS
sudo yum install epel-release

命令行Tips

进程及端口

# 查看端口占用情况
netstat -ap | grep 端口号   # 查看某一个端口
netstat -ntlp
top -p 进程ID:查看进程的实时情况,包括内存大小,内存占用率、CPU占用率,运行时间
cat /proc/进程ID/status:查看进程详细信息,包括线程数,线程名称,线程状态,占用内存大小
pstree -p 进程ID:查看线程的进程数以及进程ID
lsof -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 目录 # 在特定目录及其子目录中的文件查找str
fdupes:快速查找重复文件
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.xz
tar xvf *.tar
tar zxvf *.tgz
tar -xjf tar.bz2   # 解压bz2文件
gunzip *.gz     # 解压gz文件
tar -xzf *.tar.gz
 
# 复制
cp 文件1 文件2
cp -r 目录1 目录2  # 递归复制
cp -a 目录1 目录2  # 递归复制目录,同时将文件属性也复制过去
 
# 文件分割
split -b 1024m   # 文件分隔-b表示按大小分隔,-l表示按行数分隔
 
# 查看文件内容
cat filename | more  # 表示分页查看文件内容
 
# 输出内容到文件
cat ./test.conf >> /etc/supervisord.conf
sudo 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_conf
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
 
#保存,然后重启ssh服务
service sshd restart
 
# 进制特定IP登录,vim /etc/hosts.deny
sshd: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  # 挂载某个分区文件为ext4
vim /etc/fstab中添加
UUID=硬盘的UUID  /挂载位置   ext4 defaults 0  0   # 在系统启动时自动挂载硬盘blkid /dev/sda1  查看硬盘UUID用sudo blkid
 
sudo 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-core
sudo do-release-upgrade
 
# 系统开关
shutdown -h now # 关机
shutdown -r now # 重启
 
# 查看某个命令的系统调用
strace + 命令: 这条命令十分强大,可以定位你程序到底是哪个地方出了问题
 
# 增加虚拟内存
sudo dd if=/dev/zero of=/swapfile bs=1024 count=500000  # 500MB,这两行是连在一起的,我日
sudo mkswap /swapfile
sudo chown root:root /swapfile
sudo chmod 0600 /swapfile
sudo 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          # 启动失败自动重试次数,默认是3
user=root                   # 用哪个用户启动
numprocs=8                  # 进程数
redirect_stderr=true        # 把stderr重定向到stdout,默认为false
stdout_logfile=/var/log/... # 日志文件位置,若该目录不存在则无法正常启动,需要手动创建目录

常用操作

supervisord # 启动所有监控           

CURL

curl -o a.txt url   # 将文件下载到本地并命名为a.txt
curl -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.conf
cron.*  /var/log/cron.log   # 将cron前面的注释去掉
service rsyslog restart     # 重启rsyslog

其他命令

cd -: 返回上一次的目录,真他妈实用
history:查看历史命令,如果需要查看命令执行时间,需要先export HISTTIMEFORMAT='\%F \%T '
tzselect:更改时区
# 命令命名,例如如果想通过python命令调用python3而不是默认的python2,那么可以这样子:
alias python=python3
alias pip=pip3
alias 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 | bc
echo $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" ]; then
touch "$filename"
fi
 
# 判断文件是否为空
if [[ ! -s filename ]]; then
echo '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 kill
 
date+\%Y-\%m-\%d   # 获取今天的日期

原文地址:https://haofly.net/linux/index.html

vipivp常用linux命令的更多相关文章

  1. 十五个最常用Linux命令行 - imsoft.cnblogs

    众多Linux管理员在使用Linux的时候会经常使用到很多Linux命令行,其中有绝大部分不是经常使用到的.在本文中主要为大家总结了经常使用的十五个最常用Linux命令行,希望对刚刚接触Linux命令 ...

  2. 常用Linux命令小结

    常用Linux命令小结 Linux下有很多常用的很有用的命令,这种命令用的多了就熟了,对于我来说,如果长时间没有用的话,就容易忘记.当然,可以到时候用man命令查看帮助,但是,到时候查找的话未免有些临 ...

  3. 77个常用Linux命令和工具

    77个常用Linux命令和工具 Linux管理员不能单靠GUI图形界面吃饭.这就是我们编辑这篇最实用Linux命令手册的原因.这个指南是特别为Linux管理员和系统管理员 设计的,汇集了最有用的一些工 ...

  4. 常用Linux命令笔记

    任何脱离业务的架构都是耍流氓 只记录实际常用的Linux命令 常用Linux命令 查找安装路径: whereis nginx 查询nginx进程: ps aux|grep nginx 查看 CentO ...

  5. 常用 Linux 命令的基本使用

    常用 Linux 命令的基本使用 操作系统 作用:管理好硬件设备,让软件可以和硬件发生交互类型 桌面操作系统 Windows macos linux 服务器操作系统 linux Windows ser ...

  6. 【Linux基础】常用Linux命令: cd, cp, ls, mkdir, mv, rm, su, uname

    常用Linux命令:cd, cp, ls, mkdir, mv, rm, su, uname cd命令:切换当前工作目录至 dirName(目录参数) 其中 dirName 可为绝对路径或相对路径.若 ...

  7. # 常用linux 命令和相关问题解决

    最近试着自己部署了服务器,在unbantu的环境下 学习了很多新知识 也遇到了很多问题,现在腾出手了,总结一下 常用Linux命令 目录操作 pwd: 查看当前路径 cd: 移动 cd .. : 返回 ...

  8. Linux - 常用 Linux 命令的基本使用

    常用 Linux 命令的基本使用 目标 理解学习 Linux 终端命令的原因 常用 Linux 命令体验 01. 学习 Linux 终端命令的原因 Linux 刚面世时并没有图形界面,所有的操作全靠命 ...

  9. 几个常用linux命令语句

    几个常用linux命令 英文原文:What are the most useful "Swiss army knife" one-liners on Unix? 下面的这些内容是 ...

随机推荐

  1. Kafka 常见问题汇总

    Kafka 常见问题汇总 1. Kafka 如何做到高吞吐.低延迟的呢? 这里提下 Kafka 写数据的大致方式:先写操作系统的页缓存(Page Cache),然后由操作系统自行决定何时刷到磁盘. 因 ...

  2. oo第四单元总结及总课程回顾

    一.第四单元架构设计 1.第一次作业 第一次作业要求实现的只有对类图的分析.为了直观地搭建出一个类图,我新建了Manager类来处理UmlElement以及搭建树.但由于未能做好时间管理,因此第一次作 ...

  3. 还在使用MyBatis Generator?试试这个工具

    代码生成 在企业软件开发过程中,大多数时间都是面向数据库表的增删改查开发.通过通用的增删改查代码生成器,可以有效的提高效率,降低成本:把有规则的重复性劳动让机器完成,解放开发人员. MyBatis G ...

  4. 一文带你更方便的控制 goroutine

    上一篇我们讲了 go-zero 中的并发工具包 core/syncx. 从整体分析来看,并发组件主要通过 channel + mutex 控制程序中协程之间沟通. Do not communicate ...

  5. 06_pytorch的autograd操作

    06_pytorch的autograd操作 目录 一.引言 二.Variable 2.1 Variable 的数据结构 2.2 反向传播 2.3 autograd 求导数和手动求导数 三.计算图 3. ...

  6. HUAWEI防火墙双出口据链路带宽负载分担

    组网图形 组网需求 通过配置根据链路带宽负载分担,使流量按照带宽的比例分担到各链路上,保证带宽资源得到充分利用. 如图1所示,企业分别从ISP1和ISP2租用了一条链路,ISP1链路的带宽为100M, ...

  7. KMP(梅开三度之数据结构详解版

    前言 KMP算法是一种字符串匹配算法,其重中之重是next数组的构建,其代码的简洁与神奇使其广受关注. 但不难发现,acm中学到的KMP和数据结构里面学到的KMP并不一样o(︶︿︶)o 之前我写过ac ...

  8. 【beego】beego的路由设置

    beego 存在三种方式的路由:固定路由.正则路由.自动路由 基础路由 从 beego 1.2 版本开始支持了基本的 RESTful 函数式路由,应用中的大多数路由都会定义在 routers/rout ...

  9. 【手打】coredns单台使用

    目录: coredns介绍 coredns安装 corendns配置 coredns介绍 CoreDNS 其实就是一个 DNS 服务,而 DNS 作为一种常见的服务发现手段,所以很多开源项目以及工程师 ...

  10. DVWA之Insecure Captcha

    Insecure CAPTCHA Insecure CAPTCHA,意思是不安全的验证码,CAPTCHA是Completely Automated Public Turing Test to Tell ...