学习资料
- 脚本之家,Linux板块:https://www.jb51.net/list/list_235_36.htm
- 《鸟哥的Linux私房菜》:http://www.runoob.com/linux/linux-tutorial.html
命令
基本命令
ls # 显示当前所在目录
ls -a # 显示当前目录所有文件(包括隐藏文件)
ls / # 显示系统目录结构
ls -l # 显示全部文件及属性(可查看快捷方式的指向)
ll # 同上
ls | grep "abc" # 查找当前目录中文件名包含abc的文件
cd folder_name # 打开文件夹
cd .. # 退回到上级目录
cd / # 退回到根目录
pwd # 显示当前目录
cat file_name # 打开文件(完全打开)
more file_name # 打开文件(分批次打开)
whereis exec_name # 查询程序的安装路径,eg: whereis hive
which exec_name # 查询程序运行路径,eg: which hive
ps -ef| grep <software> # 查询运行中软件的安装位置,eg:ps -ef | gref flume
find / -name file_name # 查看某具体文件名的所在地址
grep [-acinv] [--color=auto] '搜寻字符串' filename # 查找文件里符合条件的字符串
mkdir folder_name # 新建文件夹
rm file_name # 删除文件
rm -rf folder_name # 删除文件夹
ls | grep -E "tmp_ys*" | xargs rm # 删除满足该正则表达式tmp_ys*的所有文件
tar -zxvf gz_name # 解压缩.tar.gz文件
curl url (eg: curl https://www.baidu.com) # 浏览万维网
cat /etc/passwd | grep user_name # 查看所有用户
cat /etc/passwd # 查看用户密码
userdel -r user_name # 删除用户
make # 用gcc编译c文件
<linux_command> & # 后台执行进程,从而不占据屏幕;eg:hive -f tmp.sql &
nohup <linux_command> # 退出终端或账号,命令仍然执行下去(no hang up)
nohup <linux_command> & # 在后台持续执行命令,即使退出也持续执行
jps # 显示当前所有进程、PID
jps -lm # 显示当前所有PID、运行的类名
sudo su # 用户暂时申请root权限,后续输入的是当前用户的密码
sudo yangsong # 切换为个人账号yangsong
sudo # 切换root账号,需要输入root的密码
wc -l file_name # 统计文件行数
head -10 source.txt > target.txt # 取txt文件的前10行到另一个文件
top # 列出所有系统进程
kill -9 [pid] # 杀死进程
:set encoding=utf-8 # 解决vim编辑时,中文乱码问题
:set paste # 进入粘贴插入模式,即不会自动缩进和连续注释。解决vim编辑时,粘贴字符的缩进问题
chmod +x test.sh # 为 test.sh 文件增加可执行权限
export LC_ALL=zh_CN.GBK # 设置编码格式
export LC_ALL=zh_CN.utf8 # 设置编码格式
crontab -l # 显示目前所有的定时任务
crontab -e # 新增或编辑定时任务
* * * * * python3 /root/yangsong/demo.py >> log.txt # 每分钟执行一次demo.py程序,并将日志写入 log.txt 中
0 6 * * * echo "Good morning." >> /tmp/test.txt # 每天早上6点打印信息
vim /etc/hosts # 修改host
# 增加环境变量
step1. vim /etc/profile,在 PATH 后面增加相应程序的路径;
step2. source /etc/profile,编译配置文件;
运行shell脚本的方法:
Method1: sh FileName # 启动一个子shell来执行命令,写在FileName中的变量不会对父shell产生影响
Method2: bash FileName # 与sh等价,但设置比sh丰富
Method3: source FileName # 在当前bash环境下读取并执行FileName中的命令
Method4: . FileName # 与source等价
df -h # 查询机器存储空间
adduser tommy # 添加名为tommy的用户
passwd tommy # 修改tommy账户的密码
vim /etc/sudoers # 增加root权限,增加 `tommy ALL=(ALL) ALL`
# Linux磁盘空间清理,一般流程
df -Th # 磁盘空间查看
find / -size +10000M 列出所有大于10G的文件
sed -i 1,999d result1.txt # 把 result1.txt 从第一行删除到 第999行。但是特别慢
echo " " > test.txt # 将文件内容用空格替代,速度很快
du -sh # 打印该目录下所有文件的总大小
# netcat 命令,TCP/IP协议相关
# 一对local address/ foreign address构成了一个TCP连接
# local address: 本地地址;foreign address: 远程地址,即与本机有联系的地址
netstat -talnp # 查看系统所有端口
netstat -tln # 查看系统所有正在监听的端口
netstat -anp | grep <port> # 查看某个端口的状态
lsof -i :<port> # 查看监听端口的使用程序、PID
kill -s <PID> # 杀死该进程,即可释放端口
# 发送get请求
curl "http://127.0.0.1:5030/get_something?userid=jack&class=001"
# 发送post请求
curl -d '{"userid":"jack", "class":"001"}' "http://127.0.0.1:5030/post_something"
curl http://127.0.0.1/v1 -X POST
-H "Content-Type:application/json;charset=UTF-8" -H "Authorization:mima0101"
-d '{"pushId":"001"}'
vim基本命令
- 用vim打开文件:
vim tmp.sql
- 开始编辑文件:
i
- 退出vim编辑器:先按键盘的
esc
键,然后输入:wq
,即保存后退出 - 删除文件某行:
dd
- 删除文件所有文本:先执行
gg
跳跃至首行;然后执行dG
清空全部文本; - 跳跃至尾行:
G
- 切换编辑模式为paste模式,从而vim编辑器不会自动换行:
set paste
添加命令别名alias
以将hive命令简写为h作为例子:
- Step1. 在你的登录用户目录下,输入
ll -a
命令,显示所有隐藏文件,找到.bashrc
; - Step2. 编辑
.bashrc
文件,在最后加上格式为alias h='hive'
的代码; - Step3. 在Linux shell下,输入
h
,即可实现输入hive
的效果;
清理linux的磁盘占用空间
最简单的方法是df -Th
查看磁盘空间,然后找到、删除大文件。但有时候我们会发现,通过df -Th
统计磁盘剩余空间,和du -sh
统计磁盘使用空间,打印的信息不一样。明明前者显示剩余空间很少了,但后者显示没用多少。
这是因为删除了东西没有释放句柄,需要重启一下占用文件句柄的进程、或直接kill对应的进程。首先,要用lsof |grep deleted
找到全部包含delete命令的进程,然后lsof -n |grep deleted |awk -F' ' ' {printf "kill -9 %s\n", $2}' > test.sh
将全部的进程删除语句写入test.sh 这个文件当中,最后 sh test.sh
即可批量删除全部对应的句柄进程了。最后等待几分钟,再执行df -Th
即可发现空间释放了。
常用shell脚本
# 按顺序输出日期
count=0
while [ $count -lt 15 ];
do
run_date=`date -d "2018-12-17 + $count day" +%Y-%m-%d`
run2_date=`date -d "2018-12-16 + $count day" +%Y-%m-%d`
echo $run_date
echo $run2_date
#hive --hivevar settle_date=$run_date timest=$run2_date -f dw_bzd_analysis.hql
#echo --
count=$((count+1))
done
# 日期命令
date +%Y%m%d # 获取当天日期
date +%Y-%m-%d # 获取当天日期
date -d next-day +%Y%m%d # 获取明天的日期
date -d last-day +%Y%m%d # 获取昨天的日期
date -d last-month +%Y%m # 获取上个月的年和月
date -d next-month +%Y%m # 获取下个月的年和月
date -d next-year +%Y # 获取明年的年份
# https://www.cnblogs.com/liyanbin/p/8250378.html
Linux文件属性
- 文件属性:由10位字符组成,eg:‘drwxr-xr-x’,其含义如下图所示
从左至右用0-9这些数字来表示。
其中,第0位确定文件类型,第1-3位确定属主(该文件的所有者)拥有该文件的权限。
第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。
其中,第1、4、7位表示读权限,如果用"r"字符表示,则有读权限,如果用"-"字符表示,则没有读权限;
第2、5、8位表示写权限,如果用"w"字符表示,则有写权限,如果用"-“字符表示没有写权限;第3、6、9位表示可执行权限,如果用"x"字符表示,则有执行权限,如果用”-"字符表示,则没有执行权限。
ft get -s work/ /usr/share/fonts/windows/
ft get -s conf
ft get -s conf/arial.ttf
scp root@www.runoob.com:/home/root/others/music /home/space/music/1.mp3
/data/code/static/fonts
/usr/share/fonts/sans-serif/
fc-list #字体列表
fc-list :lang=zh #中文字体
mkfontscale
mkfontdir
fc-cache
fc-match -v “字体名” # 查看字体详情
findfont: Font family [‘sans-serif’] not found. Falling back to DejaVu Sans.
curl http://bailing-v7-dev-80.bailing.odpcld.oa.com/gamematrix/
ifconfig # 查看ip地址等信息
cp * /usr/share/fonts/sans-serif/
cat /etc/redhat-release # 查看 Linux 发行版本
service crond restart # 重启 crontab 服务
nohup gunicorn -w 4 -b <服务器IP>:8000 app:app &
nohup python3 /data/code/app.py &