Linux 服务器维护基本操作知识汇总

介绍

平时我们使用 linux 服务器的是,需要掌握一些基本知识。

标准输入和输出

  • 0 是一个文件描述符,表示标准输入(stdin)
  • 1 是一个文件描述符,表示标准输出(stdout)
  • 2 是一个文件描述符,表示标准错误(stderr)

例子,把正确的输出给a.txt

ls -a >a.txt
或
ls -a 1>a.txt

默认 > 就是表示1>
>表示重定向到什么地方

例子,把正确的输出给a.txt,把错误的输出给b.txt

ls -a 1>a.txt 2>b.txt

例子,把错误的输出和正确的输出都给a.txt

ls -a >a.txt 2>&1
或
ls -a 1>a.txt 2>a.txt
命令 > 文件 2 >&1 以捜盖的方式,把正确输出和错误输出都保存到同一个文件中
命令 >> 文件 2 >&1 以追加的方式,把正确输出和错误输出都保存到同一个文件中
命令&>文件 以覆盖的方式,把正确输出和错误输出都保存到同一个文件中
命令&>>文件 以追加的方式,把正确输出和错误输出都保存到同一个文件中
命令>>文件1 2>>文件2 把正确的输出追加到文件1中,把错误的输出追加到文件2中

总结
1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null"
2 表示stderr标准错误
& 表示等同于的意思,2>&1,表示2的输出重定向等同于1

git 仓库忽略文件权限模式监听

# 全局
git config --global core.filemode false

# 本仓库
git config core.filemode false

ssh 端口不是22进行传送

仓库拉取

git clone ssh://git@127.0.0.1:端口/yy.git 

ssh 登录

ssh -p 端口 root@IP

使用ssh 私钥登录

ssh -i 私钥 root@ip

nohup 是 no hang up 的缩写,就是不挂断的意思

nohup和&的区别

  • & : 指在后台运行,&是指在后台运行,但当用户推出 (挂起) 的时候,命令自动也跟着退出
  • nohup : 不挂断的运行,注意并没有后台运行的功能,,就是指,用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,例如我们断开SSH连接都不会影响他的运行,注意了nohup没有后台运行的意思;&才是后台运行
  • nohup COMMAND &,这样就能使命令永久的在后台执行

例子

  • sh test.sh & 将sh test.sh任务放到后台 ,关闭xshell,对应的任务也跟着停止。
  • nohup sh test.sh 将sh test.sh任务放到后台,关闭标准输入,终端不再能够接收任何输入(标准输入),重定向标准输出和标准错误到当前目录下的nohup.out文件,即使关闭xshell退出当前session依然继续运行。
  • nohup sh test.sh & 将sh test.sh任务放到后台,但是依然可以使用标准输入,终端能够接收任何输入,重定向标准输出和标准错误到当前目录下的nohup.out文件,即使关闭xshell退出当前session依然继续运行。

输出指定文本

nohup command > kq.file 2>&1 &

表示后台运行,输出文本到kq.file,错误和正确都到这里

监听我们的脚本是否停止

找出某个命令的进程 号

grep 'php artisan queue:work' | grep -v grep | awk '{print $2}' 

awk '{print $2}' 一行一行的读取指定的文件, 以空格作为分隔符,打印第二个字段。

监听我们的队列是否掉线

#!/bin/bash

while true;do
    server=`ps -aux | grep '/www/wwwroot/demolv/artisan queue:work' | grep -v grep | awk '{print $2}'`
    now=`date "+%Y-%m-%d %H:%M:%S"`
    if [ ! "$server" ]; then

        #如果不存在就重新启动
        nohup /usr/bin/php /www/wwwroot/demolv/artisan queue:work >/root/queue.log 2>&1 &
        echo "${now} : 队列驱动成功" >> /root/queue_start.log
        #启动后沉睡10s
        sleep 10
    else
        echo "${now} : 队列已经在运行 PID=${server}"  >> /root/queue_start.log
    fi
    #每次循环沉睡10s
    sleep 5
done

循环监听

定时监听

#!/bin/sh

now=`date "+%Y-%m-%d %H:%M:%S"`

server=`ps -aux | grep '/www/wwwroot/demolv/artisan queue:work' | grep -v grep | awk '{print $2}' `
if [ ! "$server" ]; then
   nohup /usr/bin/php /www/wwwroot/demolv/artisan queue:work >/root/queue.log 2>&1 &
    echo "${now}:开始运行"
else
    echo "${now}:已运行"

fi

开机驱动脚本

vim /etc/rc.local  
chmod +x /etc/rc.d/rc.local

crontab

crontab -e

当“crontab -e”编辑完成之后,一旦保存退出,那么这个定时任务实际就会写入 /var/spool/cron/ 目录中,每个用户的定时任务用自己的用户名进行区分。而且 crontab 命令只要保存就会生效,只要 crond 服务是启动的

查看

 crontab -l

删除

crontab -l

这里都是你当前用户的操作

表 2 crontab 时间表示
项目 含义 范围
第一个 一小时当中的第几分钟(minute) 0~59
第二个 一天当中的第几小时(hour) 0~23
第三个 一个月当中的第几天(day) 1~31
第四个 一年当中的第几个月(month) 1~12
第五个 一周当中的星期几(week) 0~7(0和7都代表星期日)
表 3 时间特殊符号
特殊符号 含义
`*`(星号) 代表任何时间。比如第一个 "*" 就代表一小时种每分钟都执行一次的意思。
,(逗号) 代表不连续的时间。比如 "0 8,12,16***命令" 就代表在每天的 8 点 0 分、12 点 0 分、16 点 0 分都执行一次命令。
-(中杠) 代表连续的时间范围。比如 "0 5 ** 1- 6 命令",代表在周一到周六的凌晨 5 点 0 分执行命令。
/(正斜线) 代表每隔多久执行一次。比如 "*/10****命令",代表每隔 10 分钟就执行一次命令。

黑白课堂

sh脚本秒级别执行

比如我要让laravel 每秒执行调度,其实就是执行60个进程。

#!/bin/bash
step=1 #间隔的秒数

for (( i = 0; i < 60; i=(i+step) )); do
    /usr/local/php/bin/php /home/www/blog/artisan schedule:run
    sleep $step
done
exit 0

如果你要10秒,

#!/bin/bash
step=10 #间隔的秒数
​
for (( i = 0; i < 60; i=(i+step) )); do
    /usr/local/php/bin/php /home/www/blog/artisan schedule:run
    sleep $step
done
exit 0

写入定时里面

* * * * *  /www/dingshi/crontab.sh 

Linux下批量Kill多个进程

比如杀死php所有进程

ps -ef|grep php|grep -v grep|cut -c 9-15|xargs kill -9
  • "ps - ef"是linux 里查看所有进程的命令。这时检索出的进程将作为下一条命令"grep mcfcm_st"的输入。
  • "grep mcfcm_st"的输出结果是,所有含有关键字"mcfcm_st"的进程,这是Oracle数据库中远程连接进程的共同特点。
  • "grep -v grep"是在列出的进程中去除含有关键字"grep"的进程。
  • "cut -c 9-15"是截取输入行的第9个字符到第15个字符,而这正好是进程号PID。
  • "xargs kill -9"中的xargs命令是用来把前面命令的输出结果(PID)作为"kill -9"命令的参数,并执行该令

git 发行一个版本

查看 所有 tag 标签

git tag

查看某个

git tag hbkt

某个提交打上tag

git tag -a hbkt -m '描述' c809ddbf83939a89659e51dc2a5fe183af384233    //在某个commit 上打tag

推送到线上

git push origin hbkt

推送所有

git push origin --tags

删除 tag

 git tag -d hbkt 

删除线上

git push origin :refs/tags/hbkt 

评论区 (0)

没有记录
支持 markdown,图片截图粘贴拖拽都可以自动上传。

相关帖子

黑白课堂

如果你在.env文件下配置了变量参数,在路由缓存下会无效

| 最后更新 2020-12-11 03:05:43
1596 0
黑白课堂

laravel之Artisan命令操作,以及自己编写Artisan Console命令

| 最后更新 2021-01-13 14:24:58
1398 0
黑白课堂

JWT(JSON Web Token)是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。 一个JWT实际上就是一个字符串,它由三部分组成,头部、载荷与签名

| 最后更新 2021-01-13 14:25:29
1530 0
黑白课堂

扩展一个指令在blade模板中使用。

| 最后更新 2020-12-11 03:04:51
1144 0
黑白课堂

所有Laravel应用启动的中心,所有Laravel的核心服务都是通过服务提供者启动,服务提供者是应用配置的中心. >这里需要了解下IOC(控制反转)也叫依赖注入

| 最后更新 2021-01-11 03:14:14
1047 0
黑白课堂

控制对资源的访问权限,这个权限不同于RBAC(角色的权限访问控制),比如,只能操作自己的信息,可以说是拟补RBAC的更加细腻的权限。

| 最后更新 2021-01-13 14:24:00
1068 0
黑白课堂

黑白课堂 · 技术专家

专业PHP开发

年度VIP 站长创业者玉树凌风每天醒来0收入
查看更多

最新视频课程

钻级赞助商