新人问一般都用哪些 Linux 命令,我把这个扔了过去,linux 基础及应用教程课后答案
基本操作
Linux 关机,重启
#?关机
shutdown?-h?now
#?重启
shutdown?-r?now
查看系统,CPU 信息
#?查看系统内核信息
uname?-a
#?查看系统内核版本
cat?/proc/version
#?查看当前用户环境变量
env
cat?/proc/cpuinfo
#?查看有几个逻辑 cpu,?包括 cpu 型号
cat?/proc/cpuinfo?|?grep?name?|?cut?-f2?-d:?|?uniq?-c
#?查看有几颗 cpu,每颗分别是几核
cat?/proc/cpuinfo?|?grep?physical?|?uniq?-c
#?查看当前 CPU 运行在 32bit 还是 64bit 模式下,?如果是运行在 32bit 下也不代表 CPU 不支持 64bit
getconf?LONG_BIT
#?结果大于 0,?说明支持 64bit 计算.?lm 指 long?mode,?支持 lm 则是 64bit
cat?/proc/cpuinfo?|?grep?flags?|?grep?'?lm?'?|?wc?-l
建立软连接
ln?-s?/usr/local/jdk1.8/?jdk
rpm 相关
#?查看是否通过 rpm 安装了该软件
rpm?-qa?|?grep?软件名
sshkey
#?创建 sshkey
ssh-keygen?-t?rsa?-C?your_email@example.com
#id_rsa.pub?的内容拷贝到要控制的服务器的?home/username/.ssh/authorized_keys?中,如果没有则新建(.ssh 权限为 700,?authorized_keys 权限为 600)
命令重命名
#?在各个用户的.bash_profile 中添加重命名配置
alias?ll='ls?-alF'
同步服务器时间
sudo?ntpdate?-u?ntp.api.bz
后台运行命令
#?后台运行,并且有 nohup.out 输出
nohup?xxx?&
#?后台运行,?不输出任何日志
nohup?xxx?>?/dev/null?&
#?后台运行,?并将错误信息做标准输出到日志中?
nohup?xxx?>out.log?2>&1?&
强制活动用户退出
#?命令来完成强制活动用户退出.其中 TTY 表示终端名称
pkill?-kill?-t?[TTY]
查看命令路径
which?<命令>
查看进程所有打开最大 fd 数
ulimit?-n
配置 dns
vim?/etc/resolv.conf
nslookup,查看域名路由表
nslookup?google.com
last, 最近登录信息列表
#?最近登录的 5 个账号
last?-n?5
设置固定 ip
ifconfig?em1??192.168.5.177?netmask?255.255.255.0
查看进程内加载的环境变量
#?也可以去?cd?/proc?目录下,?查看进程内存中加载的东西
ps?eww?-p??XXXXX(进程号)
查看进程树找到服务器进程
ps?auwxf
查看进程启动路径
cd?/proc/xxx(进程号)
ls?-all
#?cwd 对应的是启动路径
添加用户, 配置 sudo 权限
#?新增用户
useradd?用户名
passwd?用户名
#增加 sudo 权限
vim?/etc/sudoers
#?修改文件里面的
#?root????ALL=(ALL)???????ALL
#?用户名?ALL=(ALL)???????ALL
强制关闭进程名包含 xxx 的所有进程
ps?aux|grep?xxx?|?grep?-v?grep?|?awk?'{print?$2}'?|?xargs?kill?-9
磁盘,文件,目录相关操作
============
vim 操作
#normal 模式下?g 表示全局,?x 表示查找的内容,?y 表示替换后的内容
:%s/x/y/g
#normal 模式下
0??#?光标移到行首(数字 0)
$??#?光标移至行尾
shift?+?g?#?跳到文件最后
gg?#?跳到文件头
#?显示行号
:set?nu
#?去除行号
:set?nonu
#?检索
/xxx(检索内容)??#?从头检索,?按 n 查找下一个
?xxx(检索内容)??#?从尾部检索
打开只读文件,修改后需要保存时(不用切换用户即可保存的方式)
#?在 normal 模式下
:w?!sudo?tee?%
查看磁盘, 文件目录基本信息
#?查看磁盘挂载情况
mount
#?查看磁盘分区信息
df
#?查看目录及子目录大小
du?-H?-h
#?查看当前目录下各个文件,?文件夹占了多少空间,?不会递归
du?-sh?*
wc 命令
#?查看文件里有多少行
wc?-l?filename
#?看文件里有多少个 word
wc?-w?filename
#?文件里最长的那一行是多少个字
wc?-L?filename
#?统计字节数
wc?-c
常用压缩, 解压缩命令
压缩命令
tar?czvf?xxx.tar?压缩目录
zip?-r?xxx.zip?压缩目录
解压缩命令
tar?zxvf?xxx.tar
#?解压到指定文件夹
tar?zxvf?xxx.tar?-C?/xxx/yyy/
unzip?xxx.zip
变更文件所属用户, 用户组
chown?eagleye.eagleye?xxx.log
cp, scp, mkdir
#复制
cp?xxx.log
#?复制并强制覆盖同名文件
cp?-f?xxx.log
#?复制文件夹
cp?-r?xxx(源文件夹)?yyy(目标文件夹)
#?远程复制
scp?-P?ssh 端口?username@10.10.10.101:/home/username/xxx?/home/xxx
#?级联创建目录
mkdir?-p?/xxx/yyy/zzz
#?批量创建文件夹,?会在 test,main 下都创建 java,?resources 文件夹
mkdir?-p?src/{test,main}/{java,resources}
比较两个文件
diff?-u?1.txt?2.txt
日志输出的字节数,可以用作性能测试
#?如果做性能测试,?可以每执行一次,?往日志里面输出?“.”?,?这样日志中的字节数就是实际的性能测试运行的次数,?还可以看见实时速率.
tail?-f?xxx.log?|?pv?-bt
查看, 去除特殊字符
#?查看特殊字符
cat?-v?xxx.sh
#?去除特殊字符
sed?-i?'s/^M//g’?env.sh??去除文件的特殊字符,?比
如^M:??需要这样输入:?ctrl+v+enter
处理因系统原因引起的文件中特殊字符的问题
#?可以转换为该系统下的文件格式
cat?file.sh?>?file.sh_bak
#?先将 file.sh 中文件内容复制下来然后运行,?然后粘贴内容,?最后 ctrl?+?d?保存退出
cat?>?file1.sh
#?在 vim 中通过如下设置文件编码和文件格式
:set?fileencodings=utf-8?,然后?w?(存盘)一下即可转化为?utf8?格式,
:set?fileformat=unix
#?在 mac 下使用 dos2unix 进行文件格式化
find?.?-name?"*.sh"?|?xargs?dos2unix
tee, 重定向的同时输出到屏幕
awk?‘{print?$0}’?xxx.log?|?tee?test.log
检索相关
====
grep
#?反向匹配,?查找不包含 xxx 的内容
grep?-v?xxx
#?排除所有空行
grep?-v?'^/pre>
#?返回结果?2,则说明第二行是空行
grep?-n?“^$”?111.txt????
#?查询以 abc 开头的行
grep?-n?“^abc”?111.txt?
#?同时列出该词语出现在文章的第几行
grep?'xxx'?-n?xxx.log
#?计算一下该字串出现的次数
grep?'xxx'?-c?xxx.log
#?比对的时候,不计较大小写的不同
grep?'xxx'?-i?xxx.log
awk
#?以':'?为分隔符,如果第五域有 user 则输出该行
awk?-F?':'?'{if?(0}'?/etc/passwd?
#?统计单个文件中某个字符(串)(中文无效)出现的次数
awk?-v?RS='character'?'END?{print?--NR}'?xxx.txt
find 检索命令
#?在目录下找后缀是.mysql 的文件
find?/home/eagleye?-name?'*.mysql'?-print
#?会从?/usr 目录开始往下找,找最近 3 天之内存取过的文件。
find?/usr?-atime?3?–print
#?会从?/usr 目录开始往下找,找最近 5 天之内修改过的文件。
find?/usr?-ctime?5?–print
#?会从?/doc 目录开始往下找,找 jacky 的、文件名开头是 j 的文件。??
find?/doc?-user?jacky?-name?'j*'?–print
#?会从?/doc 目录开始往下找,找寻文件名是 ja 开头或者 ma 开头的文件。
find?/doc?(?-name?'ja*'?-o-?-name?'ma*'?)?–print
#??会从?/doc 目录开始往下找,找到凡是文件名结尾为 bak 的文件,把它删除掉。-exec 选项是执行的意思,rm 是删除命令,{?}?表示文件名,“;”是规定的命令结尾。?
评论