系统命令
# 查看系统版本
cat /etc/issue
lsb_release -a
cat /etc/os-release
cat /etc/redhat-release # 这种方法只适合Redhat系的Linux
# 查看Linux内核版本:
1、cat /proc/version
2、uname -a
free -m # 查看内存使用情况(单位m -g单位g)
du -lh --max-depth=1 # 查看当前目录硬盘文件大小
df -lh # 查看磁盘剩余空间
passwd # 修改当前用户密码
rz -bye # 上传
sz # 下载
zip -qr pack.zip ./mark/ -x "./.git" \*.log # 压缩,忽略.git文件夹和*.log文件
unzip pack.zip # 解压
tar -zxvf git-2.27.0.tar.gz -C /data # 解压gz包到/data/git-2.27.0
tar -cvjpf etc.tar.bz2 /etc # 解压
netstat -nutlp |grep 端口号 # 查看端口号
netstat -nutlp |grep -E '300[0-9]|301[0-2]' # 查看3000-3012之间端口号
lsof -i:端口号 # 查看端口号
lsof -p pid # 查看pid的执行路径
ps -aux|grep pid # 根据PID来查看被哪个程序在使用
kill -9 pid # 杀死进程
fuser -k -n tcp 端口号 # 查看并杀死端口所有进程
tail -n 1000 ticket-out.log | grep -C 100 "{key}" # 查看日志
grep -r "{关键字}" {路径} # 查找关键字所在文件
find 搜索目录 -name 文件名 # 查找某个文件所在路径
vim /etc/sudoers # 添加sudo权限
df -h # 查看当前目录,磁盘占用情况
du --max-depth=1 -h # 查看当前目录每个文件夹的情况
du -sh /usr/ # 计算文件夹大小
工具命令
## 常用命令
telnet ip 端口
nslookup 域名 # 查询域名背后的ip
yum install -y net-tools # 对于centos安装netstat等网络工具
## nginx相关
service nginx start # 首次启动
nginx -t # 测试
nginx -s reload # 重启
nginx -s stop # 停止
## nginx启动
kill -9 nginx—pid
nginx -c /etc/nginx/nginx.conf
nginx -s reload
## apache进程查看和重启
sudo ps -ef|grep httpd
apachectl configtest
apachectl restart
## mysql常用命令
mysql -h127.0.0.1 -P3306 -uroot -p'pwd' --default-character-set=latin1
mysql -u root -p # 连接本地
https://segmentfault.com/a/1190000012703513 # 数据库重启
SELECT User, Host, Password FROM mysql.user;# 查询账号权限
mysql> show processlist; # 负载过高查看
show full columns from 表名 # 显示所有字段信息
## 更新root账号密码
mysql -u root
mysql> use mysql;
mysql> UPDATE user SET Password = PASSWORD('newpass') WHERE user = 'root';
mysql> FLUSH PRIVILEGES;
## 导入sql文件
### 方法一
mysql>use abc;
mysql>set names utf8;
mysql>source /home/abc/abc.sql;
### 方法二
mysql -u用户名 -p密码 数据库名 < 数据库名.sql
## 查询npm全局安装包命令
npm list -g --depth 0
## pm2命令
pm2 start app.js -n project # 将应用设置别名为project
pm2 save # 保存当前列表
pm2 startup # 设置开机启动
## vim命令
1. 行号 大写G 跳到某行
2. ctrl + g显示当前行数信息
3. G跳到最后一行, gg跳到第一行
4. dd删除当前所在行 2dd删除两行
5. u撤销
6. h左 j下 k上 l右
7. /进入搜索?反向搜索 回车 n向下 N向上
8. v可视化选择 y复制 p粘贴
9. a当前插入 A行末插入 i
10. :set number 或:set nu显示行号
11. 跳到行首^,行末$
## cat命令
cat -n file 显示文件行号
## 其它linux命令
1.rz、sz 下载 上传文件
2.查看磁盘空间
df -hl
查看单个目录
du -bs dir_name
3. linux光标
ctrl + a行首
ctrl + e行尾
连续命令
## ssh免密登录
mkdir /root/.ssh
vim /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
vim /etc/ssh/sshd_config
PubkeyAuthentication no 修改为 PubkeyAuthentication yes
## scp本地上传文件到服务器
scp -i ~/ssh-key/test_rsa ~/Downloads/test.html root@ip:/usr/share/nginx
## 设置软链和重载配置
cd ~
sudo vim .bash_profile
ln -s /home/tt/nodejs/bin/node /usr/local/bin/
source .bash_profile 或者 sudo ldconfig
## 登录后,显示用户名路径
vim ~/.bash_profile
source ~/.bash_profile
## 合并并且取差集
cat *.csv > 286_sum.csv
grep -F -v -f 286_post.csv 286_sum.csv|sort|uniq > 286_error.csv # 结果为第二个文件去除第一个文件
## 添加用户和用户组
useradd 用户名
passwd 用户名
groupadd 用户组
usermod -a -G 用户组 用户名
newgrp 用户组 # 用当前用户切换登陆到另一个用户组
## 权限相关
chmod –R 777
groups 账号名称 # 查看账号所在组
chown -R 账号名称:组群 文件或目录
chgrp users logs/
## 给用户添加sudo权限
su root // 进入root用户
vim /etc/sudoers // 打开sudo的配置文件
test ALL=(ALL)ALL // 增加test用户未sudo权限
grep awk sed筛选三剑客
lsof -i :port|grep -n LISTEN|awk '{print $2}'|xargs kill -9 # 筛选出端口所在进程并杀掉
## 自动生成当前机器proxy链接[[
#!/bin/bash
# brew install qrencode
ip=$(ifconfig en0 | grep 'inet' | sed 's/^.inet //g' | grep 'netmask' | awk '{print "http://"$1":8089/proxy.pac"}')
qrencode -t ANSIUTF8 $ip
echo $ip
## ]]自动生成当前机器proxy链接
linux相关问题
Q: Password has been already used. Choose another.如何强制修改?
A: Linux将旧密码策略保存在 /etc/security/opasswd 中,删除包含您尝试更改密码的用户的行。
Q:软链相关命令?
A:创建,修改,删除
1)创建软链接
ln -s [源文件或目录] [目标文件或目录]
2)删除软链接
rm –rf 软链接名称
3)修改软链接
ln –snf [新的源文件或目录] [目标文件或目录]
Q: 默认全局变量路径?
A:“/bin”、“/sbin”、“/usr/bin”、“/usr/sbin”、“/usr/local/bin”
Q: 如何设置全局变量?
A:一共三种方法如下
1)直接用export命令:
export PATH=$PATH:/opt/au1200_rm/build_tools/bin
查看是否已经设好,可用命令export查看
2)修改profile文件:
vi /etc/profile
export PATH="$PATH:/opt/au1200_rm/build_tools/bin"
让环境变量立即生效需要执行如下命令:
source /etc/profile
3)修改.bashrc文件:
vi /root/.bashrc
export PATH="$PATH:/opt/au1200_rm/build_tools/bin"
通过echo命令测试一下:
echo $PATH
4) 解决中文乱码
执行locale -a | grep zh,查看输出,取zh_CN.UTF-8类型,
修改/etc/profile,添加如下行,后面的值根据具体写法设置
export LANG=zh_CN.UTF-8
systemd相关命令
#################################
# 重启系统
$ sudo systemctl reboot
# 关闭系统,切断电源
$ sudo systemctl poweroff
# ********Unit 管理*********
# 显示系统状态
$ systemctl status
# 显示单个 Unit 的状态
sysystemctl status apache.service
# 立即启动一个服务
$ sudo systemctl start apache.service
# 立即停止一个服务
$ sudo systemctl stop apache.service
# 重启一个服务
$ sudo systemctl restart apache.service
# 杀死一个服务的所有子进程
$ sudo systemctl kill apache.service
# 重新加载一个服务的配置文件
$ sudo systemctl reload apache.service
# 重载所有修改过的配置文件
$ sudo systemctl daemon-reload
# 显示某个 Unit 的所有底层参数
$ systemctl show httpd.service
# 显示某个 Unit 的指定属性的值
$ systemctl show -p CPUShares httpd.service
# 设置某个 Unit 的指定属性
$ sudo systemctl set-property httpd.service CPUShares=500
# 服务配置文件
/etc/systemd/system/xxx.service
# ********Unit 管理*********
#################################
# 显示当前主机的信息
$ hostnamectl
# 设置主机名
$ hostnamectl set-hostname test
#################################
# 查看本地化设置
$ localectl
# 设置本地化参数
$ sudo localectl set-locale LANG=en_GB.utf8
$ sudo localectl set-keymap en_GB
#################################
# 查看当前时区设置
$ timedatectl
# 显示所有可用的时区
$ timedatectl list-timezones
# 设置当前时区
$ sudo timedatectl set-timezone America/New_York
$ sudo timedatectl set-time YYYY-MM-DD
$ sudo timedatectl set-time HH:MM:SS
#################################
# 列出当前session
$ loginctl list-sessions
# 列出当前登录用户
$ loginctl list-users
# 列出显示指定用户的信息
$ loginctl show-user guest
#################################
# 查看所有日志(默认情况下 ,只保存本次启动的日志)
$ sudo journalctl
# 查看内核日志(不显示应用日志)
$ sudo journalctl -k
# 查看系统本次启动的日志
$ sudo journalctl -b
$ sudo journalctl -b -0
# 查看上一次启动的日志(需更改设置)
$ sudo journalctl -b -1
# 显示尾部的最新10行日志
$ sudo journalctl -n
# 显示尾部指定行数的日志
$ sudo journalctl -n 20
# 实时滚动显示最新日志
$ sudo journalctl -f
# 查看指定服务的日志
$ sudo journalctl /usr/lib/systemd/systemd
# 查看指定进程的日志
$ sudo journalctl _PID=1
# 查看某个路径的脚本的日志
$ sudo journalctl /usr/bin/bash
# 查看指定用户的日志
$ sudo journalctl _UID=33 --since today
# 查看某个 Unit 的日志
$ sudo journalctl -u nginx.service
$ sudo journalctl -u nginx.service --since today
# 实时滚动显示某个 Unit 的最新日志
$ sudo journalctl -u nginx.service -f
# 显示日志占据的硬盘空间
$ sudo journalctl --disk-usage
# 指定日志文件占据的最大空间
$ sudo journalctl --vacuum-size=1G
# 指定日志文件保存多久
$ sudo journalctl --vacuum-time=1years
systemctl配置文件
[Unit]
Description: 当前服务的简单介绍
Documentation: 使用文档的位置
After: 服务应该在那些服务之后启动
Before: 服务应该在那些服务之前启动
[Service]
Type=simple(默认值):ExecStart字段启动的进程为主进程
StandardError=配志日志处理程序,一般为journal,然后使用journalctl查看
PIDFile=当服务启动时,systemd会尝试读取此文件以确定服务的PID。/usr/src/xxx.pid
ExecStart=启动服务时执行的命令
ExecReload=重启服务时执行的命令
ExecStop=停止服务时执行的命令
LimitNOFILE=那么服务进程将只能同时打开不超过该数值的文件描述符,51200
Restart=on-failure如果服务正常退出(即退出状态码为0),systemd 会重启它。
RestartSec=尝试重启等待的秒数1s
[Install]
WantedBy=表示该服务所在的 Target。一般为multi-user.target
crontab命令
查询DNS
- dig 命令 host 命令 nslookup 命令 whois 命令