Linux运维操作集锦

  |  

摘要: 本文整理 Linux 运维中常见的操作和小功能,持续更新

【对数据分析、人工智能、金融科技、风控服务感兴趣的同学,欢迎关注我哈,阅读更多原创文章】
我的网站:潮汐朝夕的生活实验室
我的公众号:潮汐朝夕
我的知乎:潮汐朝夕
我的github:FennelDumplings
我的leetcode:FennelDumplings


文件

删除某目录下所有的目录,但是文件保留

1
find . -type d -print -exec rm -rf {} \;

查看文件个数

当前目录下的文件的个数

1
ls -l | grep "^-" | wc -l

查看当前目录下文件的个数,包括子目录里的

1
ls -lR | grep "^-" | wc -l

查看某目录下目录的个数,包括子目录里的

1
ls -lR | grep "^d" | wc -l

rsync 同步文件时显示进度

1
rsync -av --progress src det

分卷压缩

1
tar zcf - 2017.log | split -d -b 100m - logs.tar.gz

合并分卷解压缩

1
cat logs.tar.gz* | tar zx

查看动态链接库有没有 a

1
ldconfig -p | grep a

重定向到文件 log 并打印到屏幕

1
ls | tee log | less

实用管道线时,前一个命令的标准错误不会被 tee 到 log 文件中。

如果要将标准错误也被 tee 读取,写法如下

1
ls 2&>1 | tee log | less

账号

第一次设置 su 的密码

root 没有默认密码,需要手动设定,方法如下:

1
sudo passwd root

此后就可以通过 su 命令切换到 root 用户了。

注意 su 与 sudo 的区别:

  1. su 的密码 root 的密码;sudo 的密码是用户的密码。
  2. su 直接将身份变成 root;sudo 只是以 root 身份运行命令,不需要知道 root 密码。

查看本机主机名

1
2
echo $HOSTNAME
hostname

修改本机主机名

首先查看文件 /etc/sysconfig/network 中有无 HOSTNAME 的定义,如果有,改为自定义名称 czxaliyun。

然后修改 hostname 文件:

1
czxaliyun

然后修改 hosts 文件中的映射:

1
127.0.0.1   localhost localhost.czx-aliyun-1

系统

查看设备使用率

1
df -lh

查看操作系统位数

1
getconf LONG_BIT

查看当前操作系统内核信息

1
uname -a

查看当前操作系统版本信息

1
cat /proc/version

查看当前操作系统发行版信息

1
2
3
# 下面两个都可以
cat /etc/issue
cat /etc/redhat-release
1
lsb_release -a

查找系统中已安装的包

1
dpkg -l | grep ...

网络

查看本机内网 ip

1
ifconfig -a

查看本机外网 ip

1
curl ifconfig.me

程序

托管执行

nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。

nohup 命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下,如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。

下面是示例,& 的作用是后台执行,退出终端后无影响。

1
nohup bash run.sh &

github 批量推送拉取

推送

遍历每个项目,如果项目有改动,则推送。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
ROOT=~/github/FennelDumplings/

DATE=`date "+%Y-%m-%d"`
echo ${DATE}

cd ${ROOT}
for project in `ls ${ROOT}`
do
cd ${project}
echo "Project: "${ROOT}${project}
GIT_STATUS=`git status -s`
if [[ -n ${GIT_STATUS} ]]; then
git add -A
git commit -m ${DATE}
git push
fi
echo "-------------------"
cd ${ROOT}
done

拉取

1
2
3
4
5
6
7
8
9
10
11
12
13
14
ROOT=~/github/FennelDumplings/

DATE=`date "+%Y-%m-%d"`
echo ${DATE}

cd ${ROOT}
for project in `ls ${ROOT}`
do
cd ${project}
echo "Project: "${ROOT}${project}
git pull
echo "-------------------"
cd ${ROOT}
done

Share