https://www.jqhtml.com/30047.html strace + 命令: 这条命令十分强大,可以定位你程序到底是哪个地方出了问题
https://www.jqhtml.com/30047.html
我的Linux手册
基础安装
# 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://www.jqhtml.com/30047.html strace + 命令: 这条命令十分强大,可以定位你程序到底是哪个地方出了问题的更多相关文章
- 一条命令解决: sql server 2008 安装提示重启计算机
0.将安装的iso文件解压 1. 使用管理员账户打开 cmd命令行 2.将命令行的路径切换到解压路径下,你应该可以看到setup.exe 3.执行命令 一条命令解决:setup.exe /SkipR ...
- Ubuntu常用200条命令
查看软件xxx安装内容:dpkg -L xxx 查找软件库中的软件:apt-cache search 正则表达式 查找软件库中的软件:aptitude search 软件包 查找文件属于哪个包: ...
- 【命令】htop命令
一.Htop的使用简介 大家可能对top监控软件比较熟悉,今天我为大家介绍另外一个监控软件Htop,姑且称之为top的增强版,相比top其有着很多自身的优势.如下: 两者相比起来,top比较繁琐 默认 ...
- SS命令和Netstat命令比较
在早期运维工作中,查看服务器连接数一般都会用netstat命令.其实,有一个命令比netstat更高效,那就是ss(Socket Statistics)命令!ss命令可以用来获取socket统计信息, ...
- 每天一个linux命令(44)--ss命令
ss 是 socket statistics 的缩写.顾名思义,ss 命令可以用来获取socket 统计信息,它可以显示和netstat 类似的内容.但 ss 的优势在于它能够显示更多更详细的有关TC ...
- npm 一条命令更换淘宝源
一条命令更换淘宝源 npm config set registry https://registry.npm.taobao.org
- Linux中的高级文本处理命令,cut命令,sed命令,awk命令
1.2.1 cut命令 cut命令可以从一个文本文件或者文本流中提取文本列. cut语法 [root@www ~]# cut -d'分隔字符' -f fields ## 用于有特定分隔字符 [r ...
- Linux下间隔多少秒 (即以秒为单位) 去执行某条命令或某个shell脚本的操作方法【转】
在日常运维工作中, 经常会碰到以秒为单位去定时执行某些命令或监控脚本的需求. 说到定时任务就要用到crontab,通常来说,crontab的最小单位是分钟级别,要想实现秒级别的定时任务,就要进行特殊设 ...
- linux下安装jdk 详细步骤(一条命令即可安装)
转载:https://blog.csdn.net/luochangchen/article/details/72804426 作为Java开发人员,在Linux下安装一些开发工具是必备技能,本文以安装 ...
随机推荐
- limanmanExp数据库审计设计思路与重要代码
目的 在代码审计的时候经常会想看看某个访问会触发哪些数据库操作.目前已知的数据库审计有多家大型厂商的设备,还有seay源码审计系统中的数据库监控1.0 但是.开源的已知的就只有seay源码审计系统中的 ...
- Elasticsearch 主节点和暖热节点解析
Elasticsearch 主节点和暖热节点解析 主节点 控制整个集群,进行一些轻量级操作,列如:跟踪哪些节点是集群中的一部分,决定节点分片分配,负责集群健康, 不包含数据,也不参与搜索和索引操作,对 ...
- [^ ] 跟 [! ] 差在哪?-- Shell十三问<第十四问>
[^ ] 跟 [! ] 差在哪?-- Shell十三问<第十四问> 这道题目说穿了, 就是要探讨 Wildcard(通配符)与 Regular Expression(正则表达式)的差别的. ...
- Dynamics CRM实体系列之字段
本节开始讲实体中的基础数据存储对象,也就是字段. Dynamics CRM目前总共有13种字段类型,分别为单行文本.选项集.多选选项集.两个选项.图像.整数.浮点数.十进制数.货币.多行文本.日期和时 ...
- OO结课了,狂喜
OO结课了,狂喜 哈哈哈哈哈 哈哈哈 哈哈 哈 第十三次作业 UML类图 简要分析: 本次作业是对UML类图进行解析,给到的接口里面已经有了很多类了,但是自带的类肯定是没有反应这些类的结构的.所以就自 ...
- CentOS8搭建FTP服务器
2021.2.20 更新 1 概述 文章核心: CentOS8使用vsftpd搭建FTP服务器 安装以及测试的详细过程 2 安装 2.1 安装vsftpd+ftp sudo yum install - ...
- Day13_70_join()
join() 方法 * 合并线程 join()线程合并方法出现在哪,就会和哪个线程合并 (此处是thread和主线程合并), * 合并之后变成了单线程,主线程需要等thread线程执行完毕后再执行,两 ...
- zabbix容器化安装及监控docker应用
一.zabbix agent2 介绍 从Zabbix 4.4之后,官方推出了Zabbix Agent 2,意味着zabbix 不在只是物理机监控的代名词,现在你可以使用Go为Zabbix编写插件,来监 ...
- [重要更新]微信小程序登录、用户信息相关接口调整:使用 wx.getUserProfile 取代 wx.getUserInfo
2021年2月24日,微信官方团队发布了一个调整通知:<小程序登录.用户信息相关接口调整说明>,公告明确从4月13日起,所有发布的小程序将无法使用 wx.getUserInfo 接口(JS ...
- 1148 Werewolf - Simple Version
Werewolf(狼人杀) is a game in which the players are partitioned into two parties: the werewolves and th ...