अनलॉक करने के लिए मेरे पास एक प्रोग्राम है जो अक्सर SQL सर्वर को लॉक कर देता है और पुनरारंभ किए गए प्रोग्राम द्वारा उपयोग के लिए पहुंच योग्य नहीं है जब तक कि मैं रीबूट नहीं करता (जिसे मैं वास्तव में टालना चाहता हूं)। तो यह (मेरे मामले में वास्तविक फ़ाइल के स्थान पर सामान्य नाम, db.sqlite
का उपयोग कर, zotero.sqlite
) काम नहीं करता है:प्रभावी ढंग से एक SQLite डेटाबेस
sqlite3 db.sqlite
sqlite> .backup main backup.sqlite
Error: database is locked
एक जवाब here के आधार पर, मैंने कोशिश की:
echo ".dump" | sqlite3 db.sqlite | sqlite3 db.sqlite2
mv db.sqlite2 db.sqlite
db.sqlite2
है 0 केबी तो यह स्पष्ट रूप से काम नहीं किया। another thread से प्रेरित होकर, मैं भी
echo '.dump' | sqlite3 db.sqlite > db.dump
cat db.dump | sqlite3 db.sqlite2
mv db.sqlite2 db.sqlite
जो db.sqlite2
जो db.sqlite
को फ़ाइल आकार में थोड़ा छोटा होता है की ओर जाता है की कोशिश की, और Zotero (फ़ाइल जो डेटाबेस की आवश्यकता है) उसकी सामग्री को पहचान करने में सक्षम नहीं था।
तो यह यह करने का एक बहुत जानवर बल रास्ता की तरह लगता है, लेकिन काम किया:
cp -pv db.sqlite db.sqlite2
rm -f db.sqlite
mv db.sqlite2 db.sqlite
मुझे आश्चर्य है कि अगर वहाँ इस समाधान के लिए किसी भी कमियां हैं और क्यों अन्य तरीकों इस एक से पहले प्रस्तावित हैं।
क्या आप वाकई दुर्घटनाग्रस्त प्रक्रिया अभी भी लटक रहे नहीं हैं? –
ठीक है, 'ps -aux | grep zotero' मुझे '(zotero-bin) 'देता है जो एक ज़ोंबी प्रक्रिया प्रतीत होता है, और इसकी मूल प्रक्रिया' 1' है इसलिए मैं इसे मार नहीं सकता। यह बताता है कि मुझे इसे 'आरएम-एफ' क्यों करना है? – hatmatrix
'init' स्वचालित रूप से लाश को वापस लाता है। उस ज़ोटरो प्रक्रिया की स्थिति ('STAT') क्या है? –