❶ 一個程序會產生哪幾個文件夾
一個程序產生的文件夾如下:
一、程序的組成部分
linux下程序大都手余肢是由以下幾部分組成:
二進制文件:也就是可以運行的程序文件
庫文件:就是通常我們見到的lib目錄下的文件
配置文件:
幫助文檔:通常是我們在Linux下用man命令查看的命令的文檔
二、Linux下程序的存放目錄
Linux程序的存放目錄大致有三個地方:
/etc, /bin, /sbin, /lib :系統啟動就需要用到的程序,這些目錄不能掛載額外的分區,必須在根文件系統的分區上
/usr/bin,/usr/sbin,/usr/lib:操作系統核心功能,可以單獨分區
/usr/local/bin,/usr/local/sbin:/usr/local/lib:/usr/local/etc:/usr/local/man:這幾個目錄用於安裝第三方程序,分別對應了二進制文件、庫文件、配置文件、幫助文檔的目錄
通常來說源碼安裝程序時,就安裝在 /usr/local目錄下
原文地址:https://www.cnblogs.com/4545945a/p/11529744.html
推薦文章
ubuntu16.04環境下fatal error: lua.h: No such file or directory
DB2資料庫建表報錯
MySQL、Oracle與DB2資料庫差異
jQueryrocket
jQueryrocket
js文件替換
PHP源文件編碼與變數編碼的判斷
PHP判斷字元串所屬編碼:ASCII、GB2312、GBK、UTF-8、ISO-8859-1
PHP的URL編碼解碼與原理、自定義實現
Odoo13_前端圖毀胡標按鈕實例
Odoo13_向導應用之軟刪除
macOS一條命令查看當前wifi密碼
編譯redis-5.0.8報錯/usr/bin/ld: cannot find -latomic解決方法
頻繁調用ConcurrentLinkedQueue類的offer和remove方法會內存泄露
記一次排查問題用到工具
【jvisualvm】堆查器使用的內存不足
開發規范
各種http報錯的畢世報錯的狀態碼的分析
Springboot整合Elasticsearch
Wang ❤️ Free Fast Stable Best Just try it_v2....
md5
表空間
create_index
非額度合同和額度合同
如何在linux中查找python安裝包的路徑
Golang中的SingleFlight與CyclicBarrier
linux安裝protoc
protobuf 的優缺點
Xshell 連接 VirtualBox
限制 input 輸入框只能輸入純數字
❷ linux上的Visualvm怎麼安裝插件
先下載linux的系統映像,我在官網上下載的是iso格式的。在vm上新建虛擬機,然後一直一步散帆步按照提示來就ok了,裡面有linux的,和windows的安裝一樣。實在不懂就在網路文庫上看教程,圖文並茂,比我給你說好多了。
哦,還有,vm原版的是英文的,不曉得你的是不是漢沖灶雹化版的,漢化方法網路文庫上也有詳細教程。
系統安裝之後所有東西都在一個虛擬磁碟文件上,不要了直接刪除它就行了,也可以把它復制出來隨身攜帶,只要有vm,辯山就能使用你的linux。
❸ linux上如何安裝jstatd服務
此命令是一個RMI Server應用程序,提供了對JVM的創建和結束監視,也為遠程監視工具提供了一個可以attach的介面
options
-nr 當一個存在的RMI Registry沒有找到時,不嘗試創建一個內部的RMI Registry
-p port 埠號,默認為1099
-n rminame 默認為JStatRemoteHost;如果多個jstatd服務開始在同一台主機上,rminame唯一確定一個jstatd服務
-J jvm選項
jstatd
會報如下錯誤:
Could not create remote object access denied (java.util.PropertyPermission java.rmi.server.ignoreSubClasses write) java.security.AccessControlException: access denied (java.util.PropertyPermission java.rmi.server.ignoreSubClasses write) at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323) at java.security.AccessController.checkPermission(AccessController.java:546) at java.lang.SecurityManager.checkPermission(SecurityManager.java:532) at java.lang.System.setProperty(System.java:727) at sun.tools.jstatd.Jstatd.main(Jstatd.java:122)
這是因為沒有給jstatd指定安全策略
創建安全策略文件,並命名為jstatd.all.policy
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
再次啟動
C:\Program Files\Java\jdk1.6.0_16\bin>jstatd -J-Djava.security.policy=jstatd.all.policy
利用jps查看正在運行的java命令
jps
C:\Documents and Settings\lulu>jps
4892 Bootstrap
1296 Jstatd
4484 Jps
3332 org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
此時就可以使用jvisualvm.exe以遠程的方式監控JVM相關信息了。
更多例子
(1)使用內部RMI Registry
jstatd -J-Djava.security.policy=all.policy (默認埠為1099)
(2)使用外部RMI Registry
a)使用默認值
rmiregistry&
jstatd -J-Djava.security.policy=all.policy
b)使用2020埠
rmiregistry 2020&
jstatd -J-Djava.security.policy=all.policy -p 2020
c)使用2020埠,使用rminame
rmiregistry 2020&
jstatd -J-Djava.security.policy=all.policy -p 2020 -n AlternateJstatdServerName
(3)RMI Registry已經啟動,不創建內部RMI Registry
jstatd -J-Djava.security.policy=all.policy -nr
(4)RMI日誌能力
jstatd -J-Djava.security.policy=all.policy -J-Djava.rmi.server.logCalls=true
❹ 如何在linux終端裡面運行java
通常用命令、shell腳本,或者直接運行程序可執行的程序。像java的jar包可以用java -jar xxx.jar執行。eclipse也可以cd到eclipse解壓目錄,然後./eclipse執行eclipse這個程序。
可以看看shell腳本,和java相關的命令和工具(javac,javap,jvisualvm,jconsole等等)。
所有的軟體都有一個可執行腳本或者可執行程序。cd過去sh xxx.sh 或者./xxx.sh就可以在命令行執行。像tomcat也有startup.sh和shutdown.sh。你也可以看看,其實就是一個很復雜的shell腳本
❺ SSH下Linux X Server的配置
本文主要介紹如譽咐何在Linux下配置圖形服務以便ssh遠程使用GUI環境。
Linux的桌面環境是通過X Server(XFree86、Xorg),X Client(libX11),Window Manager(KDE、xfce、wm2)等服務提供的。我們先簡單了解X涉及的一些概念,下面的X架構圖來自wikipedia,請注意X server是運行在有屏幕的機器這邊,也就是你自己的PC上,而遠程執行空虛搏的應用,例如jvisualvm則是X的client端。換句話說就是SSH的client端是X的server端,SSH的server端是X的client端。
由於X server是監聽在本地的,ssh服務端的遠程client想連回本地必須使用remote tunnel, X11 forwarding 則可以方斗祥便的將X11協議轉發到遠程主機。轉發過程中會自動設置 DISPLAY 環境變數和Xauth授權信息。
然後重啟sshd,重啟並不會導致已連上的ssh client斷開。
伺服器的XLib版本則可以通過 rpm -q libX11 命令確認。
❻ linux查看java線程,怎麼回收無用的線程
1. 先進行一次thread mp (jstack -m <pid> 或者 kill -3 <pid> , 或者使用jconsole, jvisualvm等) (jstack 命令有一些選項不是每個平台都支持的, jconsole jvisualvm都是有界面的, 如果你要運行一般需要配置agent或者重定向display到某台機器).
2. 然後過了一段時間再做一次, 如果發現同一個thread NID 還是停在同一個地方, 基本上可以懷疑是否掛住了(一般只需要查看你業務相關的stack信息就行了).
3. 還有一種就是你的日誌很詳細, 也可以看到一些的情況(列印到某個地方就卡住了, 呵呵).
❼ oraclejdk打的javacore
JAVACORE與HEAPDUMP生成大法 原創
2016-11-01 10:52:41
5點贊
Z.Virgil
碼齡10年
關注
Windows平台:
ORACLE JDK:HOTSPOT
IBM JDK:V9
目錄
前言
JAVACORE篇:
Windows平台:
ORACLE JDK:HOTSPOT
IBM JDK:V9
LINUX平台:
HEAPDUMP篇:
LINUX平台:
前言
在項目上我們經常要生成javacore和heapmp來進行分析。這里總結一下我自己在項目稿羨上生成這兩個文件的方法。
JAVACORE篇:
JavaCore文件主要保存的是Java應用各線程在某一時刻的運行的位置,即JVM執行到哪一個類、哪一個方法、哪一個行上。它是一個文本文件,打開後可以尺敬敏看到每一個線程的執行棧,以stack trace的顯示。
通過對JavaCore文件的分析可以得到應用是否「卡」在某一點上,即在某一點運行的時間太長,例如數陵枝據庫查詢,長期得不到響應,最終導致系統崩潰等情況。
Windows平台:
ORACLE JDK:HOTSPOT
1.jvisualvm工具
jvisualvm是sun的JDK中自帶的工具,在java_home/bin/jvisualvm.exe中就可以打開。
掛在到對應的java進程後,可以直接生javacore。2.jstack工具
jstack為JDK自帶的命令行工具。
其中-l -r 可以顯示出詳細信息,鎖信息等。
3.sendsignal工具
sendsignal工具是老外開發的一個小工具,用來生成已知進程號的java進程的javacore。
附件中有具體工具。通過sendsignal.exe pid即可生成。
4.ctrl+break按鍵
在Windows上啟動程序的時候,可以直接在啟動進程的窗口按組合鍵生成javacore。
然而由於NC涉及到兩個java進程,一個小的導程序,一個是正式的程序。
所以用該方法只能生成引導程序的javacore。看不到生產環境的實際快照。
❽ 如何jvm監控linux伺服器
如何配置visualvm監控
visualvm支持在Linux和windows上啟用圖形界面監控jvm的資源,但是如何可以使我們在windows上監控到遠程linux伺服器資源,這還需要做一些配置,此文是在原文基礎上做了更改的,希望對大家能有所幫助。
(1)首先要修改JDK中JMX服務的配置文件,以獲得相應的許可權:
進入$JAVA_HOME所在的根目錄的/jre/lib/management子目錄下,
a. 將jmxremote.password.template文件復制為jmxremote.password
b. 調整jmxremote.access和jmxremote.password的許可權為只讀寫,可以使用如下命令
chmod 600 jmxremote.access jmxremote.password
c. 打開jmxremote.password文件,去掉
# monitorRole QED
# controlRole R&D
這兩行前面的注釋符號
(2)修改env.sh
打開env.sh文件,並在JVM的啟動配置中添加如下信息:
JAVA_OPTS="-Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=10.20.150.218 其他配置」
這幾個配置的說明如下:
-Dcom.sun.management.jmxremote.port:這個是配置遠程connection的埠號的,要確定這個埠沒有被佔用
-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false:這兩個是固定配置,是JMX的遠程服務許可權的
-Djava.rmi.server.hostname:這個是配置server的IP的,要使用server的IP最好在機器上先用hostname –i看一下IP是不是機器本身的IP,如果是127.0.0.1的話要改一下,否則遠程的時候連不上,目前我們的server上我已經都改好了
(3)Windows客戶端配置
JDK 1.6版本自帶visualvm,只需要進到bin目錄下啟動即可
啟動後頁面比較簡潔,配置也很簡單:
a. 點擊左側菜單的add Remote host,輸入server的IP,然後再advanced settings里配置埠(注意這個埠要和server上的埠一致)
b. 右擊剛才配置的IP,選擇JMX connection方式,再次輸入埠,就可以監視到JVM資源了
❾ linux 怎麼打開jvisualvm
網路有
❿ 如何查看java虛擬機堆內存的參數值
請確保java_home/bin配置到path環境變數下,因為這些工具都在jdk的bin目錄下
jps(JVM Process Status Tool):JVM機進程狀況工具
用來查看基於HotSpot JVM裡面所有進程的具體狀態, 包括進程ID,進程啟動的路徑等等。與unix上的ps類似,用來顯示本地有許可權的java進程,可以查看本地運行著幾個java程序,並顯示他們的進程號。使用jps時,不需要傳遞進程號做為參數。
Jps也可以顯示遠程系統上的JAVA進程,這需要遠程服務上開啟了jstat服務,以及RMI注及服務,不過常用都是對本對的JAVA進程的查看。
命令格式:jps [ options ] [ hostid ]
常用參數說明:
-m 輸出傳遞給main方法的參數,如果是內嵌的JVM則輸出為null。
-l 輸出應用程序主類的完整包名,或者是應用程序JAR文件的完整路徑。
-v 輸出傳給JVM的參數。
例如:
C:\Users\Administrator>jps -lmv
1796 -Dosgi.requiredJavaVersion=1.5 -Xms40m -Xmx512m -XX:MaxPermSize=256m
7340 sun.tools.jps.Jps -lmv -Denv.class.path=.;D:\DevTools\VM\jdk1.6.0_31\\lib\dt.jar;D:\DevTools\VM\jdk1.6.0_31\\lib\tools.jar; -Dapplication.home=D:\DevTools\VM\jdk1.6.0_31 -Xms8m
其中pid為1796的是我的eclipse進程,pid為7340的是jps命令本身的進程
jinfo(Configuration Info for Java):JVM配置信息工具
可以輸出並修改運行時的java 進程的opts。用處比較簡單,用於輸出JAVA系統參數及命令行參數
命令格式:jinfo [ options ] [ pid ]
常用參數說明:
-flag 輸出,修改,JVM命令行參數
例如:
C:\Users\Administrator>jinfo 1796
將會列印出很多jvm運行時參數信息,由於比較長這里不再列印出來,可以自己試試,內容一目瞭然
Jstack(Stack Trace for Java):JVM堆棧跟蹤工具
jstack用於列印出給定的java進程ID或core file或遠程調試服務的Java堆棧信息,如果是在64位機器上,需要指定選項"-J-d64「
命令格式:jstack [ option ] pid
常用參數說明:
-F 當』jstack [-l] pid』沒有相應的時候強制列印棧信息
-l 長列表. 列印關於鎖的附加信息,例如屬於java.util.concurrent的ownable synchronizers列表.
-m 列印java和native c/c++框架的所有棧信息.
-h | -help列印幫助信息
例如:
C:\Users\Administrator>jstack 1796
2013-05-22 11:42:38
Full thread mp Java HotSpot(TM) Client VM (20.6-b01 mixed mode):
"Worker-30" prio=6 tid=0x06514c00 nid=0x1018 in Object.wait() [0x056af000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
- locked <0x1ad84a90> (a org.eclipse.core.internal.jobs.WorkerPool)
at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:50)
......
......
......
......
jstat(JVM statistics Monitoriing Tool):JVM統計信息監視工具
對Java應用程序的資源和性能進行實時的命令行的監控,包括了對Heap size和垃圾回收狀況的監控
命令格式:jstat [ option pid [interval [ s | ms ] [count] ] ]
常用參數說明:
-gcutil 輸出已使用空間占總空間的百分比
-gccapacity 輸出堆中各個區域使用到的最大和最小空間
例如:每隔1秒監控jvm內存一次,共監控5次
C:\Users\Administrator>jstat -gccapacity 1796 1s 5
NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC PGCMN PGCMX PGC PC YGC FGC
13632.0 174720.0 40896.0 4032.0 4032.0 32832.0 27328.0 349568.0 81684.0 81684.0 12288.0 262144.0 80640.0 80640.0 42 96
13632.0 174720.0 40896.0 4032.0 4032.0 32832.0 27328.0 349568.0 81684.0 81684.0 12288.0 262144.0 80640.0 80640.0 42 96
13632.0 174720.0 40896.0 4032.0 4032.0 32832.0 27328.0 349568.0 81684.0 81684.0 12288.0 262144.0 80640.0 80640.0 42 96
13632.0 174720.0 40896.0 4032.0 4032.0 32832.0 27328.0 349568.0 81684.0 81684.0 12288.0 262144.0 80640.0 80640.0 42 96
13632.0 174720.0 40896.0 4032.0 4032.0 32832.0 27328.0 349568.0 81684.0 81684.0 12288.0 262144.0 80640.0 80640.0 42 97
C:\Users\Administrator>jstat -gcutil 1796 1s 5
S0 S1 E O P YGC YGCT FGC FGCT GCT
0.00 0.00 0.52 53.35 99.77 42 0.513 99 38.119 38.632
0.00 0.00 0.52 53.35 99.77 42 0.513 99 38.119 38.632
0.00 0.00 0.52 53.35 99.77 42 0.513 99 38.119 38.632
0.00 0.00 0.52 53.35 99.77 42 0.513 99 38.119 38.632
0.00 0.00 0.52 53.35 99.77 42 0.513 99 38.119 38.632
一些術語的中文解釋:
S0C:年輕代中第一個survivor(倖存區)的容量 (位元組)
S1C:年輕代中第二個survivor(倖存區)的容量 (位元組)
S0U:年輕代中第一個survivor(倖存區)目前已使用空間 (位元組)
S1U:年輕代中第二個survivor(倖存區)目前已使用空間 (位元組)
EC:年輕代中Eden(伊甸園)的容量 (位元組)
EU:年輕代中Eden(伊甸園)目前已使用空間 (位元組)
OC:Old代的容量 (位元組)
OU:Old代目前已使用空間 (位元組)
PC:Perm(持久代)的容量 (位元組)
PU:Perm(持久代)目前已使用空間 (位元組)
YGC:從應用程序啟動到采樣時年輕代中gc次數
YGCT:從應用程序啟動到采樣時年輕代中gc所用時間(s)
FGC:從應用程序啟動到采樣時old代(全gc)gc次數
FGCT:從應用程序啟動到采樣時old代(全gc)gc所用時間(s)
GCT:從應用程序啟動到采樣時gc用的總時間(s)
NGCMN:年輕代(young)中初始化(最小)的大小 (位元組)
NGCMX:年輕代(young)的最大容量 (位元組)
NGC:年輕代(young)中當前的容量 (位元組)
OGCMN:old代中初始化(最小)的大小 (位元組)
OGCMX:old代的最大容量 (位元組)
OGC:old代當前新生成的容量 (位元組)
PGCMN:perm代中初始化(最小)的大小 (位元組)
PGCMX:perm代的最大容量 (位元組)
PGC:perm代當前新生成的容量 (位元組)
S0:年輕代中第一個survivor(倖存區)已使用的占當前容量百分比
S1:年輕代中第二個survivor(倖存區)已使用的占當前容量百分比
E:年輕代中Eden(伊甸園)已使用的占當前容量百分比
O:old代已使用的占當前容量百分比
P:perm代已使用的占當前容量百分比
S0CMX:年輕代中第一個survivor(倖存區)的最大容量 (位元組)
S1CMX :年輕代中第二個survivor(倖存區)的最大容量 (位元組)
ECMX:年輕代中Eden(伊甸園)的最大容量 (位元組)
DSS:當前需要survivor(倖存區)的容量 (位元組)(Eden區已滿)
TT: 持有次數限制
MTT : 最大持有次數限制
jmap( Memory Map for Java):JVM內存映像工具
列印出某個java進程(使用pid)內存內的所有『對象』的情況(如:產生那些對象,及其數量)
命令格式:jmap [ option ] pid
常用參數說明:
-mp:[live,]format=b,file=<filename> 使用二進制形式輸出jvm的heap內容到文件中, live子選項是可選的,假如指定live選項,那麼只輸出活的對象到文件.
-histo[:live] 列印每個class的實例數目,內存佔用,類全名信息. VM的內部類名字開頭會加上前綴」*」. 如果live子參數加上後,只統計活的對象數量.
-F 強迫.在pid沒有相應的時候使用-mp或者-histo參數. 在這個模式下,live子參數無效.
例如:以二進制形式輸入當前堆內存映像到文件data.hprof中
jmap -mp:live,format=b,file=data.hprof 1796
生成的文件可以使用jhat工具進行分析,在OOM(內存溢出)時,分析大對象,非常有用
通過使用如下參數啟動JVM,也可以獲取到mp文件:
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=./java_pid<pid>.hprof
在jvm發生內存溢出時生成內存映像文件
jhat(JVM Heap Analysis Tool):JVM堆轉儲快照分析工具
用於對JAVA heap進行離線分析的工具,他可以對不同虛擬機中導出的heap信息文件進行分析,如LINUX上導出的文件可以拿到WINDOWS上進行分析,可以查找諸如內存方面的問題。
命令格式:jhat mpfile(jmap生成的文件)
例如:分析jmap導出的內存映像
jhat data.hprof
執行成功後,訪問http://localhost:7000即可查看內存信息,
MAT(Memory Analyzer Tool):一個基於Eclipse的內存分析工具
官網: http://www.eclipse.org/mat/
update:http://download.eclipse.org/mat/1.2/update-site/
這是eclipse的一個插件,安裝後可以打開xxx.hprof文件,進行分析,比jhat更方便使用,有些時候由於線上xxx.hprof文件過大,直接使用jhat進行初步分析了,可以的話拷貝到本地分析效果更佳。
圖形化監控工具:
在JDK安裝目錄bin下面有兩個可視化監控工具
1. JConsole(Java Monitoring and Management Console) 基於JMX的可視化管理工具。
2. VisualVM(All-in-one Java Troubleshooting Tool)隨JDK發布的最強大的運行監視和故障處理程序。
推薦使用VisualVM,他有很多插件,可以更方便的監控運行時JVM