linux命令

系统命令

# 查看系统版本
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 # 设置开机启动
systemctl status pm2-root # linux系统命令查看pm2服务

## 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
# ********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

crontab命令

  • crontab命令说明
    *     *     *   *    *        <command to be executed>
    -     -     -   -    -
    |     |     |   |    |
    |     |     |   |    +----- day of the week (0 - 6) (Sunday = 0)
    |     |     |   +------- month (1 - 12)
    |     |     +--------- day of the month (1 - 31)
    |     +----------- hour (0 - 23)
    +------------- min (0 - 59)
    
  • 每天上午9点运行脚本/path/to/your/script.sh并传递参数"arg1"和"arg2"
    • chmod +x /path/to/your/script.sh确保您的脚本具有可执行权限
    • crontab -e 来编辑crontab,默认打开编辑器
    • 0 9 * * * /path/to/your/script.sh arg1 arg2在编辑器中输入
    • 保存并关闭文件。Crontab会自动验证cron表达式。如果格式正确,指定的脚本将在设置的时间运行,并带有所需参数。
  • 查看crontab任务
    • crontab -l列出您当前用户的crontab条目
    • crontab -u username -l查看其他用户的crontab任务(如果有root权限)

查询DNS

  • dig 命令 host 命令 nslookup 命令 whois 命令
posted on 2021-01-15 13:19  reamd  阅读(163)  评论(0编辑  收藏  举报