后台启动,并忽略标准输出
三个不同例子:
nohup start.sh & # 重定向标准输出到 app.log 文件 nohup start.sh > app.log & # 忽略标准输出 nohup start.sh >/dev/null 2>&1 &
解释:2>&1的含义
/dev/null 表示空设备文件;
0 表示stdin标准输入;
1 表示stdout标准输出;
2 表示stderr标准错误。
&1代表“引用1”即:将stderr输出沿用stdout的输出,最终都输出到了/dev/null空设备上。
具体解释参见这篇文章:
https://blog.csdn.net/liupeifeng3514/article/details/79711694
将多行字符串写入文件
单行写入: echo 'xxxxxxx' >> /etc/ssh/sshd_config
注意,如果字符串里面有 $环境变量,不想转义,需要添加 echo -e参数。
多行写入:
cat >> /etc/hosts <<EOF 172.17.8.101 node1 172.17.8.102 node2 172.17.8.103 node3 EOF
注意1:如果字符串里面有 $环境变量,不想转义(\$),需要将<<EOF写成<<"EOF"。
注意2:对于多级目录新建文件写入,先创建目录和文件:
mkdir -p /etc/docker/ touch /etc/docker/daemon.json
查看进程/杀死进程
ps -ef |grep tomcat
ps -ef |grep nodeagent
sudo -u was7 kill xxx
kill -9 [+pid]例如:kill -9 1100
pid就是进程名字后面的那个数字,比如
adap 1100 ………………
nodeagent 1230……
查看所有运行中的进程
ps aux | less
查看端口号占用
netstat -ntlp
netstat -ntlp|grep -E '2181|9092'
netstat参数说明:
-n:默认情况下 netstat 会通过反向域名解析技术查找每个 IP 地址对应的主机名。这会降低查找速度。如果你觉得 IP 地址已经足够,而没有必要知道主机名,就使用 -n 选项禁用域名解析功能。
-t和-u,使用 -t 选项列出 TCP 协议的连接,-u为UDP连接。
-l:使用 -l 选项列出正在监听的套接字。不要使用 -a 选项,否则 netstat 会列出所有连接,而不仅仅是监听端口。
-p:使用 -p 选项查看进程信息。
使用 -p 选项时,netstat 必须运行在 root 权限之下,不然它就不能得到运行在 root 权限下的进程名,而很多服务包括 http 和 ftp 都运行在 root 权限之下。
-e:显示用户名(id)
使用 -ep 选项可以同时查看进程名和用户名。注意:假如你将 -n 和 -e 选项一起使用,User 列的属性就是用户的 ID 号,而不是用户名。
-s:netstat 可以打印出网络统计数据,包括某个协议下的收发包数量。例如:
netstat -st
netstat -su
-i:输出网络接口(网卡)的信息,包括收发包的数据量。
netstat -ie:将 -e 选项和 -i 选项搭配使用,可以输出用户友好的信息(等价于ifconfig)。
-c:使用 netstat 的 -c 选项持续输出信息。例如:netstat -c
使用案例:
active 状态的套接字连接用 "ESTABLISHED" 字段表示,所以我们可以使用 grep 命令获得 active 状态的连接:
netstat -atnp | grep ESTA
配合 watch 命令监视 active 状态的连接:
watch -d -n0 "netstat -atnp | grep ESTA"
查看各种连接数的数量:
[root@mdtest01 ~]# netstat -n | awk '/^tcp/ {++S[$NF]} END { for(a in S) print a, S[a]}'; ESTABLISHED 73 TIME_WAIT 1
查看虚拟IP(VIP)信息
命令:ip addr
如下橙色字体的是vip
[root@fm-nginx2 ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:50:56:8a:29:81 brd ff:ff:ff:ff:ff:ff
inet 10.1.10.81/23 brd 10.1.11.255 scope global eth1
inet 10.1.10.200/32 scope global eth1
inet 10.1.10.201/32 scope global eth1
inet 10.1.10.206/32 scope global eth1
inet 10.1.10.207/32 scope global eth1
inet 10.1.10.208/32 scope global eth1
inet 10.1.10.211/32 scope global eth1
inet 10.1.10.209/32 scope global eth1
inet 10.1.10.210/32 scope global eth1
inet6 fe80::250:56ff:fe8a:2981/64 scope link
valid_lft forever preferred_lft forever
[root@fm-nginx2 ~]# ifconfig
eth1 Link encap:Ethernet HWaddr 00:50:56:8A:29:81
inet addr:10.1.10.81 Bcast:10.1.11.255 Mask:255.255.254.0
inet6 addr: fe80::250:56ff:fe8a:2981/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:113714974 errors:0 dropped:0 overruns:0 frame:0
TX packets:122017323 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:36959662327 (34.4 GiB) TX bytes:29665843948 (27.6 GiB)
参考资料:http://blog.csdn.net/u010028869/article/details/50574907
查看软件的安装位置
sudo apt-get remove --purge google-chrome-unstable
--purge 选项表示彻底删除改软件和相关文件
Linux干净地卸载软件:
sudo apt-get remove --purge 软件名称
然后
sudo apt-get autoremove
sudo apt-get clean
用dpkg命令,详细用法可以dpkg --help
dpkg 安装软件 依赖包的问题:
运行一下这个命令解决: sudo apt-get -f install
Linux查看端口号占用情况
netstat -anp | grep LISTEN | grep -v LISTENING
其中grep -v是排除匹配内容的意思
查看linux系统的总内存
cat /proc/meminfo | grep MemTotal
linux 查看文件md5和SHA1
命令+文件名,例如:
md5sum VirtualBox-4.3.0-89960-Win.exe
sha1sum VirtualBox-4.3.0-89960-Win.exe
26、生成SSH密匙:ssh-keygen
zollty@zollty-ubuntu:~/0sync/0work/git$ ssh-keygen -t rsa -C "zollty@abc.com" Generating public/private rsa key pair. Enter file in which to save the key (/home/zollty/.ssh/id_rsa): /home/zollty/.ssh/id_rsa already exists. Overwrite (y/n)? n zollty@zollty-ubuntu:~/0sync/0work/git$ ssh-keygen -t rsa -C "zollty@abc.com" Generating public/private rsa key pair. Enter file in which to save the key (/home/zollty/.ssh/id_rsa): zbjla Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in zbjla. Your public key has been saved in zbjla.pub. The key fingerprint is: 86:60:d9:d4:68:58:3e:45:11:8d:c3:62:1c:ca:ff:7d zollty@abc.com The key's randomart image is: +--[ RSA 2048]----+ | ++*== | | ..**.= . | | *o+. . | | . o o | | o S | | o . | | . . E | | . | | | +-----------------+
zollty@zollty-ubuntu:~/0sync/0work/git$ ssh-keygen -t rsa -C "zollty@abc.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/zollty/.ssh/id_rsa): zbjla
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in zbjla.
Your public key has been saved in zbjla.pub.
生成之后要执行ssh-add才生效:
例如:
ssh-add ~/.ssh/id_rsa
ssh-add /home/zollty/0sync/0work/git/zbjla
27、linux 下载远程服务器上的文本文件到本地
命令如下:
ssh work@192.168.143.28 'cat /data/jetty/logs/2016_01_02.stderrout.log' >> /home/zollty/workspace/log.txt
28、Linux ssh登录命令
不指定用户:
ssh 192.168.0.11
指定用户:
ssh -l root 192.168.0.11
ssh root@192.168.0.11
如果修改过ssh登录端口的可以:
ssh -p 12333 192.168.0.11
ssh -l root -p 12333 216.230.230.114
ssh -p 12333 root@216.230.230.114
添加用户的命令
adduser username
例如:
adduser test
然后根据提示输入密码,之后一直回车就行了。
修改密码:
echo tomcat:tomcat | chpasswd
用户权限(归属)
chown -R username:usergroup /opt/tomcat
chown -R test:test test.txt
说明:改变某个文件的所有者和所属的组,可以使用命令chown,参数R必须是大写
每个Linux文件具有四种访问权限:可读(r)、可写(w)、可执行(x)和无权限(-),无权限(-)不做讨论。利用ls -l、ls -ld命令可以看到某个文件、目录的权限,它以显示数据的第一个字段为准。第一个字段由10个字符组成,如下:
[root@localhost /]#ls -l test.txt
-rw-r--r-- 1 root root 91 may 7 20:21 test.txt
第一位表示文件类型,-表示文件,d表示目录;后面每三位为一组。
第一组:2-4位表示文件所有者的权限,即用户user权限,简称u 在这里表示root用户有(rw-)的权限,可读(r)与可写(w)的权限,没有可执行(x)权限
第二组:5-7位表示文件所有者所属组成员的权限,group权限,简称g 这里表示root组成员有(r--)的权限,只有可读的权限。
第三组:8-10位表示所有者所属组之外的用户权限,other权限,简称o 这里表示其他人有(r--)的权限,只有可读的权限。
修改文件或文件夹的权限
[root@localhost /]chmod u+r test.txt //表示为root用户添加读的权限
[root@localhost /]chmod g-w test.txt //表示为root组去除写的权限
[root@localhost /]chmod o+x test.txt //表示其他人添加可执行的权限
如果我们要为所有用户添加所有rwx权限
[root@localhost /]chmod u=rwx,g=rwx,o=rwx test.txt
为了能更简单快捷的使用和熟悉权限,rwx权限可以用数字来表示,分别表示为r(4)、w(2)、x(1)
[root@localhost /]chmod 456 test.txt //表示root用户对test具有r(4)的权限,root组队test文件具有r(4)+x(1)的权限,其他人具有rw的权限
[root@localhost /]chmod 000 test.txt //表示去除所有权限
Linux设置时间同步
设置时间与时间服务器同步:
ntpdate 172.16.1.100
发起HTTP请求
一、get请求
1、使用wget命令:
wget "http://www.baidu.com"
具体用法,查看:wget --help
2、使用curl命令:(需要安装curl)
curl "http://www.baidu.com" 如果这里的URL指向的是一个文件或者一幅图都可以直接下载到本地
curl -i "http://www.baidu.com" 显示全部信息
curl -l "http://www.baidu.com" 只显示头部信息
curl -v "http://www.baidu.com" 显示get请求全过程解析
二、post请求
1、使用wget命令:(--post-data参数来实现)
wget --post-data "user=foo&password=bar" "http://www.baidu.com"
2、使用curl命令(通过-d参数,把访问参数放在里面):
curl -d "param1=value1¶m2=value2" "http://www.baidu.com"
查看占用cpu最高的进程
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head
或者top (然后按下M,注意这里是大写)
查看占用内存最高的进程
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head
或者top (然后按下P,注意这里是大写)
该命令组合实际上是下面两句命令:
ps aux|head -1
ps aux|grep -v PID|sort -rn -k +3|head
其中第一句主要是为了获取标题(USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND)。
接下来的grep -v PID是将ps aux命令得到的标题去掉,即grep不包含PID这三个字母组合的行,再将其中结果使用sort排序。
sort -rn -k +3该命令中的-rn的r表示是结果倒序排列,n为以数值大小排序,而-k +3则是针对第3列的内容进行排序,再使用head命令获取默认前10行数据。(其中的|表示管道操作)
补充:内容解释
PID:进程的ID
USER:进程所有者
PR:进程的优先级别,越小越优先被执行
NInice:值
VIRT:进程占用的虚拟内存
RES:进程占用的物理内存
SHR:进程使用的共享内存
S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
%CPU:进程占用CPU的使用率
%MEM:进程使用的物理内存和总内存的百分比
TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
COMMAND:进程启动命令名称